> From: Liu, Yi L <yi.l.liu@xxxxxxxxx> > Sent: Wednesday, March 8, 2023 9:14 PM > > @@ -449,33 +450,18 @@ iommufd_access_create(struct iommufd_ctx *ictx, > u32 ioas_id, > access->data = data; > access->ops = ops; > > - obj = iommufd_get_object(ictx, ioas_id, IOMMUFD_OBJ_IOAS); > - if (IS_ERR(obj)) { > - rc = PTR_ERR(obj); > - goto out_abort; > - } > - access->ioas = container_of(obj, struct iommufd_ioas, obj); > - iommufd_ref_to_users(obj); > - > if (ops->needs_pin_pages) > access->iova_alignment = PAGE_SIZE; > else > access->iova_alignment = 1; > - rc = iopt_add_access(&access->ioas->iopt, access); > - if (rc) > - goto out_put_ioas; > > /* The calling driver is a user until iommufd_access_destroy() */ > refcount_inc(&access->obj.users); > + mutex_init(&access->ioas_lock); > access->ictx = ictx; > iommufd_ctx_get(ictx); this refcnt get should be moved to the start given next patch removes the reference in the caller side.