vfio-iommufd: No need to record iommufd_ctx in vfio_device
authorYi Liu <yi.l.liu@intel.com>
Mon, 27 Mar 2023 09:33:48 +0000 (02:33 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 31 Mar 2023 16:43:31 +0000 (13:43 -0300)
iommufd_ctx is stored in vfio_device for emulated devices per bind_iommufd.
However, as iommufd_access is created in bind, no more need to stored it
since iommufd_access implicitly stores it.

Link: https://lore.kernel.org/r/20230327093351.44505-4-yi.l.liu@intel.com
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Tested-by: Terrence Xu <terrence.xu@intel.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/vfio/iommufd.c
include/linux/vfio.h

index 0695a06..78e2486 100644 (file)
@@ -142,14 +142,10 @@ int vfio_iommufd_emulated_bind(struct vfio_device *vdev,
 
        lockdep_assert_held(&vdev->dev_set->lock);
 
-       iommufd_ctx_get(ictx);
        user = iommufd_access_create(ictx, &vfio_user_ops, vdev);
-       if (IS_ERR(user)) {
-               iommufd_ctx_put(ictx);
+       if (IS_ERR(user))
                return PTR_ERR(user);
-       }
        vdev->iommufd_access = user;
-       vdev->iommufd_ictx = ictx;
        return 0;
 }
 EXPORT_SYMBOL_GPL(vfio_iommufd_emulated_bind);
@@ -163,8 +159,6 @@ void vfio_iommufd_emulated_unbind(struct vfio_device *vdev)
                vdev->iommufd_attached = false;
                vdev->iommufd_access = NULL;
        }
-       iommufd_ctx_put(vdev->iommufd_ictx);
-       vdev->iommufd_ictx = NULL;
 }
 EXPORT_SYMBOL_GPL(vfio_iommufd_emulated_unbind);
 
index 93134b0..3188d8a 100644 (file)
@@ -60,7 +60,6 @@ struct vfio_device {
        void (*put_kvm)(struct kvm *kvm);
 #if IS_ENABLED(CONFIG_IOMMUFD)
        struct iommufd_device *iommufd_device;
-       struct iommufd_ctx *iommufd_ictx;
        bool iommufd_attached;
 #endif
 };