mirror of
https://github.com/xemu-project/xemu.git
synced 2026-07-11 01:24:41 +02:00
vfio/iommufd: Restore vbasedev's reference to hwpt after CPR transfer
After CPR transfer, if there are more than one VFIO devices, device is
not added to hwpt->device_list and its reference to hwpt isn't restored
on destination. We still need to call iommufd_cdev_attach_container() to
restore it after a matching container is found, or else SIGSEV triggers.
Fixes: 4296ee0745 ("vfio/iommufd: reconstruct device")
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Steve Sistare <steven.sistare@oracle.com>
Link: https://lore.kernel.org/qemu-devel/20250928085432.40107-5-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
committed by
Cédric Le Goater
parent
d59db04aed
commit
8bf49fff0d
+2
-3
@@ -560,10 +560,9 @@ static bool iommufd_cdev_attach(const char *name, VFIODevice *vbasedev,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!cpr_is_incoming()) {
|
||||
if (!cpr_is_incoming() ||
|
||||
(vbasedev->cpr.ioas_id == container->ioas_id)) {
|
||||
res = iommufd_cdev_attach_container(vbasedev, container, &err);
|
||||
} else if (vbasedev->cpr.ioas_id == container->ioas_id) {
|
||||
res = true;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user