]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iommu: Check return of __iommu_attach_device()
authorShameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Thu, 19 Nov 2020 16:58:46 +0000 (16:58 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 Dec 2020 07:51:56 +0000 (08:51 +0100)
[ Upstream commit 77c38c8cf52ef715bfc5cab3d14222d4f3e776e2 ]

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: ce574c27ae27 ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/iommu/iommu.c

index 609bd25bf154b5bc550996dd259749338c8f04a8..6a0a79e3f5641483b32da313ddfee86cdf90110a 100644 (file)
@@ -264,16 +264,18 @@ int iommu_probe_device(struct device *dev)
         */
        iommu_alloc_default_domain(group, dev);
 
-       if (group->default_domain)
+       if (group->default_domain) {
                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_group_put(group);
 
-       if (ret)
-               goto err_release;
-
        if (ops->probe_finalize)
                ops->probe_finalize(dev);