mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
vfio: Move device_del() before waiting for the last vfio_device registration refcount
device_del() destroys the vfio-dev/vfioX under the sysfs for vfio_device. There is no reason to keep it while the device is going to be unregistered. This movement is also a preparation for adding vfio_device cdev. Kernel should remove the cdev node of the vfio_device to avoid new registration refcount increment while the device is going to be unregistered. Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Tested-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Tested-by: Yanting Jiang <yanting.jiang@intel.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> Link: https://lore.kernel.org/r/20230718135551.6592-18-yi.l.liu@intel.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
@@ -338,6 +338,9 @@ void vfio_unregister_group_dev(struct vfio_device *device)
|
||||
*/
|
||||
vfio_device_group_unregister(device);
|
||||
|
||||
/* Balances device_add in register path */
|
||||
device_del(&device->device);
|
||||
|
||||
vfio_device_put_registration(device);
|
||||
rc = try_wait_for_completion(&device->comp);
|
||||
while (rc <= 0) {
|
||||
@@ -361,9 +364,6 @@ void vfio_unregister_group_dev(struct vfio_device *device)
|
||||
}
|
||||
}
|
||||
|
||||
/* Balances device_add in register path */
|
||||
device_del(&device->device);
|
||||
|
||||
/* Balances vfio_device_set_group in register path */
|
||||
vfio_device_remove_group(device);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user