On 6/17/25 10:25, Nicolin Chen wrote:
struct iommufd_eventq { struct iommufd_object obj; struct iommufd_ctx *ictx; diff --git a/drivers/iommu/iommufd/device.c b/drivers/iommu/iommufd/device.c index 9293722b9cff..ad33f1e41a24 100644 --- a/drivers/iommu/iommufd/device.c +++ b/drivers/iommu/iommufd/device.c @@ -1084,7 +1084,39 @@ void iommufd_access_destroy_object(struct iommufd_object *obj) if (access->ioas) WARN_ON(iommufd_access_change_ioas(access, NULL)); mutex_unlock(&access->ioas_lock);
- iommufd_ctx_put(access->ictx);
- if (access->ops)
iommufd_ctx_put(access->ictx);
I was hoping we could null the ictx to signal internal? That didn't work out?
access->ictx should be NULL for internal. It should have been:
- if (access->ictx)
iommufd_ctx_put(access->ictx);
access->ictx could be treated as user ownership token. If it's NULL, there is no user ownership, indicating it's owned by the kernel. This is the concept here?
Thanks, baolu