Removing the PBA memory region from its container in vfio_user_msix_teardown() is semantically incorrect as the reference to the region is already deleted when the function is called.
The operation is unnecessary in the first place since the PCI code removes all BARs during unrealization, so stop removing the PBA memory region in vfio_user_msix_teardown(). Signed-off-by: Akihiko Odaki <od...@rsg.ci.i.u-tokyo.ac.jp> --- hw/vfio-user/pci.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/vfio-user/pci.c b/hw/vfio-user/pci.c index b53ed3b456f9..1a3741a29a1a 100644 --- a/hw/vfio-user/pci.c +++ b/hw/vfio-user/pci.c @@ -74,12 +74,6 @@ static void vfio_user_msix_setup(VFIOPCIDevice *vdev) static void vfio_user_msix_teardown(VFIOPCIDevice *vdev) { - MemoryRegion *mr, *sub; - - mr = vdev->bars[vdev->msix->pba_bar].mr; - sub = vdev->msix->pba_region; - memory_region_del_subregion(mr, sub); - g_free(vdev->msix->pba_region); vdev->msix->pba_region = NULL; } --- base-commit: 94474a7733a57365d5a27efc28c05462e90e8944 change-id: 20251010-vfio-af834e5f3807 Best regards, -- Akihiko Odaki <od...@rsg.ci.i.u-tokyo.ac.jp>