Commit 6fc7e8a3b811 for kernel

commit 6fc7e8a3b8115294f60f5c89de27330bf1b9c98e
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue May 12 13:46:13 2026 -0300

    iommu: Fix loss of errno on map failure for classic ops

    A typo, likely from a rebase, inverted the condition and caused
    errors to be lost. Fix it to be "if (ret)".

    This was breaking iommu_create_device_direct_mappings() on drivers
    that don't use iommupt and don't fully set up their domain in
    alloc_pages() (i.e., SMMUv2). In this case the first call of
    iommu_create_device_direct_mappings() should fail due to the
    incompletely initialized domain. Since it wrongly returns success,
    the second call to iommu_create_device_direct_mappings() doesn't
    happen and IOMMU_RESV_DIRECT is never set up.

    Cc: stable@vger.kernel.org
    Fixes: d6c65b0fd621 ("iommupt: Avoid rewalking during map")
    Reported-by: Josua Mayer <josua@solid-run.com>
    Closes: https://lore.kernel.org/all/321c2e57-6a17-4aef-ba42-d2ebd577e472@solid-run.com/
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Pranjal Shrivastava <praan@google.com>
    Reviewed-by: Samiullah Khawaja <skhawaja@google.com>
    Reviewed-by: Mostafa Saleh <smostafa@google.com>
    Tested-by: Josua Mayer <josua@solid-run.com>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>

diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index e7bd28cc77ee..05f78cfd1f1d 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -2709,7 +2709,7 @@ int iommu_map_nosync(struct iommu_domain *domain, unsigned long iova,
 		return 0;
 	}
 	ret = __iommu_map_domain_pgtbl(domain, iova, paddr, size, prot, gfp);
-	if (!ret)
+	if (ret)
 		return ret;

 	trace_map(iova, paddr, size);