> From: Nicolin Chen <nicolinc@xxxxxxxxxx> > Sent: Wednesday, February 8, 2023 5:18 AM > > @@ -141,10 +141,19 @@ static const struct iommufd_access_ops > vfio_user_ops = { > int vfio_iommufd_emulated_bind(struct vfio_device *vdev, > struct iommufd_ctx *ictx, u32 *out_device_id) > { > + struct iommufd_access *user; > + > lockdep_assert_held(&vdev->dev_set->lock); > > - vdev->iommufd_ictx = ictx; > iommufd_ctx_get(ictx); > + user = iommufd_access_create(vdev->iommufd_ictx, &vfio_user_ops, > vdev); > + if (IS_ERR(user)) { > + iommufd_ctx_put(vdev->iommufd_ictx); > + return PTR_ERR(user); > + } > + iommufd_access_set_ioas(user, 0); this is not required since ioas has been NULL after creation. otherwise, Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>