Skip to content

Commit

Permalink
iommu: Make @handle mandatory in iommu_{attach|replace}_group_handle()
Browse files Browse the repository at this point in the history
Caller of the two APIs always provide a valid handle, make @handle as
mandatory parameter. Take this chance incoporate the handle->domain
set under the protection of group->mutex in iommu_attach_group_handle().

Link: https://patch.msgid.link/r/20250226011849.5102-2-yi.l.liu@intel.com
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
  • Loading branch information
Yi Liu authored and Jason Gunthorpe committed Feb 28, 2025
1 parent 40f5175 commit 237603a
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/iommu/iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -3511,10 +3511,11 @@ int iommu_attach_group_handle(struct iommu_domain *domain,
{
int ret;

if (handle)
handle->domain = domain;
if (!handle)
return -EINVAL;

mutex_lock(&group->mutex);
handle->domain = domain;
ret = xa_insert(&group->pasid_array, IOMMU_NO_PASID, handle, GFP_KERNEL);
if (ret)
goto err_unlock;
Expand Down Expand Up @@ -3568,16 +3569,14 @@ int iommu_replace_group_handle(struct iommu_group *group,
void *curr;
int ret;

if (!new_domain)
if (!new_domain || !handle)
return -EINVAL;

mutex_lock(&group->mutex);
if (handle) {
ret = xa_reserve(&group->pasid_array, IOMMU_NO_PASID, GFP_KERNEL);
if (ret)
goto err_unlock;
handle->domain = new_domain;
}
handle->domain = new_domain;
ret = xa_reserve(&group->pasid_array, IOMMU_NO_PASID, GFP_KERNEL);
if (ret)
goto err_unlock;

ret = __iommu_group_set_domain(group, new_domain);
if (ret)
Expand Down

0 comments on commit 237603a

Please sign in to comment.