提交 3a8d40b6 编写于 作者: R Robin Murphy 提交者: Joerg Roedel

iommu/mediatek: Fix M4Uv2 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: NRobin Murphy <robin.murphy@arm.com>
Signed-off-by: NJoerg Roedel <jroedel@suse.de>
上级 f2f101f6
...@@ -410,6 +410,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) ...@@ -410,6 +410,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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册