From e4631c00d8e9ee3608ef3196cbe8bec4841ee988 Mon Sep 17 00:00:00 2001 From: Peter Xu Date: Wed, 8 Jan 2020 15:04:57 +0000 Subject: [PATCH 2/5] vfio/pci: Don't remove irqchip notifier if not registered RH-Author: Peter Xu Message-id: <20200108150457.12324-2-peterx@redhat.com> Patchwork-id: 93291 O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH 1/1] vfio/pci: Don't remove irqchip notifier if not registered Bugzilla: 1782678 RH-Acked-by: Alex Williamson RH-Acked-by: Cornelia Huck RH-Acked-by: Auger Eric RH-Acked-by: Jens Freimann 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 CC: David Gibson CC: Alex Williamson Cc: qemu-stable@nongnu.org # v4.2 Reported-by: yanghliu@redhat.com Debugged-by: Eduardo Habkost Fixes: c5478fea27ac ("vfio/pci: Respond to KVM irqchip change notifier") Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1782678 Signed-off-by: Peter Xu Reviewed-by: David Gibson Reviewed-by: Greg Kurz Signed-off-by: Alex Williamson (cherry picked from commit 0446f8121723b134ca1d1ed0b73e96d4a0a8689d) Signed-off-by: Peter Xu Signed-off-by: Danilo C. L. de Paula --- 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 309535f..d717520 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3100,7 +3100,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); -- 1.8.3.1