From 04e8da889016e77a3b9fea7e11569f61aadafbcb Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 28 Jul 2022 08:48:51 +0200 Subject: hw/nvme: unregister the event notifier handler on the main loop Make sure the notifier handler is unregistered in the main loop prior to cleaning it up. Fixes: 2e53b0b45024 ("hw/nvme: Use ioeventfd to handle doorbell updates") Reviewed-by: Keith Busch Reviewed-by: Jinhao Fan Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'hw/nvme/ctrl.c') diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 8aa73b048d..70b454eedb 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -4311,6 +4311,7 @@ static void nvme_free_sq(NvmeSQueue *sq, NvmeCtrl *n) if (sq->ioeventfd_enabled) { memory_region_del_eventfd(&n->iomem, 0x1000 + offset, 4, false, 0, &sq->notifier); + event_notifier_set_handler(&sq->notifier, NULL); event_notifier_cleanup(&sq->notifier); } g_free(sq->io_req); @@ -4701,6 +4702,7 @@ static void nvme_free_cq(NvmeCQueue *cq, NvmeCtrl *n) if (cq->ioeventfd_enabled) { memory_region_del_eventfd(&n->iomem, 0x1000 + offset, 4, false, 0, &cq->notifier); + event_notifier_set_handler(&cq->notifier, NULL); event_notifier_cleanup(&cq->notifier); } if (msix_enabled(&n->parent_obj)) { -- cgit v1.2.3