]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iommu/amd: Fix group refcounting
authorRobin Murphy <robin.murphy@arm.com>
Fri, 11 Nov 2016 17:59:23 +0000 (17:59 +0000)
committerJoerg Roedel <jroedel@suse.de>
Tue, 15 Nov 2016 11:25:33 +0000 (12:25 +0100)
If acpihid_device_group() finds an existing group for the relevant
devid, it should be taking an additional reference on that group.
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/amd_iommu.c

index 754595ee11b68afe32e8432d40337482111dcdac..019e02707cd5e3c893b3b6602a1847260b3ba401 100644 (file)
@@ -373,6 +373,8 @@ static struct iommu_group *acpihid_device_group(struct device *dev)
 
        if (!entry->group)
                entry->group = generic_device_group(dev);
+       else
+               iommu_group_ref_get(entry->group);
 
        return entry->group;
 }