Commit 5d1d43b0 authored by Robin Murphy's avatar Robin Murphy Committed by Joerg Roedel

iommu/mediatek: Fix M4Uv1 group refcounting

For each subsequent device assigned to the m4u_group after its initial
allocation, we need to take an additional reference. Otherwise, the
caller of iommu_group_get_for_dev() will inadvertently remove the
reference taken by iommu_group_add_device(), and the group will be
freed prematurely if any device is removed.
Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 3a8d40b6
...@@ -502,6 +502,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) ...@@ -502,6 +502,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev)
data->m4u_group = iommu_group_alloc(); data->m4u_group = iommu_group_alloc();
if (IS_ERR(data->m4u_group)) if (IS_ERR(data->m4u_group))
dev_err(dev, "Failed to allocate M4U IOMMU group\n"); dev_err(dev, "Failed to allocate M4U IOMMU group\n");
} else {
iommu_group_ref_get(data->m4u_group);
} }
return data->m4u_group; return data->m4u_group;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment