xemu/hw/vfio
Cédric Le Goater ebbf7c60bb vfio/container: Fix container object destruction
When commit 96b7af4388 intoduced a .instance_finalize() handler,
it did not take into account that the container was not necessarily
inserted into the container list of the address space. Hence, if
the container object is destroyed, by calling object_unref() for
example, before vfio_address_space_insert() is called, QEMU may
crash when removing the container from the list as done in
vfio_container_instance_finalize(). This was seen with an SEV-SNP
guest for which discarding of RAM fails.

To resolve this issue, use the safe version of QLIST_REMOVE().

Cc: Zhenzhong Duan <zhenzhong.duan@intel.com>
Cc: Eric Auger <eric.auger@redhat.com>
Fixes: 96b7af4388 ("vfio/container: Move vfio_container_destroy() to an instance_finalize() handler")
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
2024-11-18 08:40:06 +01:00
..
Kconfig hw/vfio: Move the IGD quirk code to a separate file 2020-02-06 11:55:42 -07:00
amd-xgbe.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
ap.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
calxeda-xgmac.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
ccw.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
common.c migration: Drop migration_is_setup_or_active() 2024-10-31 15:48:18 -04:00
container-base.c vfio/container: Fix container object destruction 2024-11-18 08:40:06 +01:00
container.c vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device() 2024-07-23 17:14:52 +02:00
cpr.c vfio/cpr: Make vfio_cpr_register_container() return bool 2024-05-16 16:59:20 +02:00
display.c vfio/display: Fix vfio_display_edid_init() error path 2024-07-09 11:50:37 +02:00
helpers.c vfio/helpers: Align mmaps 2024-10-23 14:46:24 +02:00
igd.c vfio/igd: fix calculation of graphics stolen memory 2024-11-18 08:40:06 +01:00
iommufd.c vfio/iommufd: Implement VFIOIOMMUClass::query_dirty_bitmap support 2024-07-23 17:14:52 +02:00
meson.build vfio: register container for cpr 2024-03-08 22:10:13 +01:00
migration.c vfio/migration: Add vfio_save_block_precopy_empty_hit trace event 2024-11-05 15:51:14 +01:00
pci-quirks.c vfio/igd: add new bar0 quirk to emulate BDSM mirror 2024-09-17 10:37:55 +02:00
pci.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
pci.h vfio/igd: add new bar0 quirk to emulate BDSM mirror 2024-09-17 10:37:55 +02:00
platform.c vfio/platform: Make vfio_populate_device() and vfio_base_device_init() return bool 2024-05-22 10:04:21 +02:00
spapr.c vfio/container: Change VFIOContainerBase to use QOM 2024-06-24 23:15:31 +02:00
trace-events vfio/migration: Add vfio_save_block_precopy_empty_hit trace event 2024-11-05 15:51:14 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00