]> git.karo-electronics.de Git - linux-beck.git/commitdiff
iommu/mediatek: Fix M4Uv1 group refcounting
authorRobin Murphy <robin.murphy@arm.com>
Fri, 11 Nov 2016 17:59:25 +0000 (17:59 +0000)
committerJoerg Roedel <jroedel@suse.de>
Tue, 15 Nov 2016 11:25:33 +0000 (12:25 +0100)
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: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/mtk_iommu_v1.c

index b8aeb07684836c902a9f87829985f05a44fdcc5d..c7063e9d67d8ed882111266dcffe6aa46152c6cc 100644 (file)
@@ -502,6 +502,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev)
                data->m4u_group = iommu_group_alloc();
                if (IS_ERR(data->m4u_group))
                        dev_err(dev, "Failed to allocate M4U IOMMU group\n");
+       } else {
+               iommu_group_ref_get(data->m4u_group);
        }
        return data->m4u_group;
 }