mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
iommu/vt-d: Unlink device if failed to add to group
commit f78947c409204138a4bc0609f98e07ef9d01ac0a upstream.
If the device fails to be added to the group, make sure to unlink the
reference before returning.
Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
Fixes: 39ab9555c2 ("iommu: Add sysfs bindings for struct iommu_device")
Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
be7ef489fe
commit
f9fbac39cf
1 changed files with 10 additions and 3 deletions
|
|
@ -5593,8 +5593,10 @@ static int intel_iommu_add_device(struct device *dev)
|
|||
|
||||
group = iommu_group_get_for_dev(dev);
|
||||
|
||||
if (IS_ERR(group))
|
||||
return PTR_ERR(group);
|
||||
if (IS_ERR(group)) {
|
||||
ret = PTR_ERR(group);
|
||||
goto unlink;
|
||||
}
|
||||
|
||||
iommu_group_put(group);
|
||||
|
||||
|
|
@ -5620,7 +5622,8 @@ static int intel_iommu_add_device(struct device *dev)
|
|||
if (!get_private_domain_for_dev(dev)) {
|
||||
dev_warn(dev,
|
||||
"Failed to get a private domain.\n");
|
||||
return -ENOMEM;
|
||||
ret = -ENOMEM;
|
||||
goto unlink;
|
||||
}
|
||||
|
||||
dev_info(dev,
|
||||
|
|
@ -5635,6 +5638,10 @@ static int intel_iommu_add_device(struct device *dev)
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
unlink:
|
||||
iommu_device_unlink(&iommu->iommu, dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void intel_iommu_remove_device(struct device *dev)
|
||||
|
|
|
|||
Loading…
Reference in a new issue