[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] vfio/pci: Don't remove irqchip notifier if not registered
From: |
Peter Xu |
Subject: |
[PATCH] vfio/pci: Don't remove irqchip notifier if not registered |
Date: |
Tue, 31 Dec 2019 08:39:15 -0500 |
The kvm irqchip notifier is only registered if the device supports
INTx, however it's unconditionally removed. If the assigned device
does not support INTx, this will cause QEMU to crash when unplugging
the device from the system. Change it to conditionally remove the
notifier only if the notify hook is setup.
CC: Eduardo Habkost <address@hidden>
CC: David Gibson <address@hidden>
CC: Alex Williamson <address@hidden>
Reported-by: address@hidden
Fixes: c5478fea27 ("vfio/pci: Respond to KVM irqchip change notifier",
2019-11-26)
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1782678
Signed-off-by: Peter Xu <address@hidden>
---
hw/vfio/pci.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 2d40b396f2..337a173ce7 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -3076,7 +3076,9 @@ static void vfio_exitfn(PCIDevice *pdev)
vfio_unregister_req_notifier(vdev);
vfio_unregister_err_notifier(vdev);
pci_device_set_intx_routing_notifier(&vdev->pdev, NULL);
- kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier);
+ if (vdev->irqchip_change_notifier.notify) {
+ kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier);
+ }
vfio_disable_interrupts(vdev);
if (vdev->intx.mmap_timer) {
timer_free(vdev->intx.mmap_timer);
--
2.24.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] vfio/pci: Don't remove irqchip notifier if not registered,
Peter Xu <=