This check was originally introduced in commit b3ebc10c373e
("vfio-pci: Add debug config options to disable MSI/X KVM support") as
part of a debug block to retrieve the MSI/MSIX message, and was later
moved by commit 0de70dc7bab1 ("vfio/pci: Rename MSI/X functions for
easier tracing") into the main interrupt handling path, becoming
production code.Under normal conditions, this code path cannot be reached because the BQL serializes all handler registration, vdev->interrupt updates, and handler removal. Replace abort() with g_assert_not_reached(), which is preferred nowdays, and add a comment clarifying the purpose. Cc: Alex Williamson <[email protected]> Acked-by: Alex Williamson <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] Signed-off-by: Cédric Le Goater <[email protected]> --- hw/vfio/pci.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index b2a07f6bb4217bcacead194ce75b359b1896ef3a..9c06b25e6370d8bbea2828bfae64a3d14fe68219 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -451,7 +451,12 @@ static void vfio_msi_interrupt(void *opaque) get_msg = msi_get_message; notify = msi_notify; } else { - abort(); + /* + * Interrupt state transitions (MSI/MSI-X -> NONE/INTx) are + * protected by the BQL, and eventfd handlers are strictly + * unregistered before vdev->interrupt is modified. + */ + g_assert_not_reached(); } msg = get_msg(pdev, nr); -- 2.54.0
