瀏覽代碼

iommu/amd: Fix group refcounting

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>
Robin Murphy 8 年之前
父節點
當前提交
f2f101f6bc
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      drivers/iommu/amd_iommu.c

+ 2 - 0
drivers/iommu/amd_iommu.c

@@ -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;
 }