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: 39ab9555c2411 ("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
@ -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…
x
Reference in New Issue
Block a user