On Tue, Dec 31, 2019 at 08:39:15AM -0500, Peter Xu wrote: > 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 > Reported-by: yanghliu@redhat.com > 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 Reviewed-by: David Gibson Mea culpa. > --- > 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); -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson