iommu: Check return of __iommu_attach_device()
Currently iommu_create_device_direct_mappings() is called
without checking the return of __iommu_attach_device(). This
may result in failures in iommu driver if dev attach returns
error.
Fixes: ce574c27ae
("iommu: Move iommu_group_create_direct_mappings() out of iommu_group_add_device()")
Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Link: https://lore.kernel.org/r/20201119165846.34180-1-shameerali.kolothum.thodi@huawei.com
Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
72b55c96f3
commit
77c38c8cf5
|
@ -264,16 +264,18 @@ int iommu_probe_device(struct device *dev)
|
||||||
*/
|
*/
|
||||||
iommu_alloc_default_domain(group, dev);
|
iommu_alloc_default_domain(group, dev);
|
||||||
|
|
||||||
if (group->default_domain)
|
if (group->default_domain) {
|
||||||
ret = __iommu_attach_device(group->default_domain, dev);
|
ret = __iommu_attach_device(group->default_domain, dev);
|
||||||
|
if (ret) {
|
||||||
|
iommu_group_put(group);
|
||||||
|
goto err_release;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
iommu_create_device_direct_mappings(group, dev);
|
iommu_create_device_direct_mappings(group, dev);
|
||||||
|
|
||||||
iommu_group_put(group);
|
iommu_group_put(group);
|
||||||
|
|
||||||
if (ret)
|
|
||||||
goto err_release;
|
|
||||||
|
|
||||||
if (ops->probe_finalize)
|
if (ops->probe_finalize)
|
||||||
ops->probe_finalize(dev);
|
ops->probe_finalize(dev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue