]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu/riscv: Fix signedness bug
authorEthan Tidmore <ethantidmore06@gmail.com>
Thu, 19 Mar 2026 18:26:44 +0000 (13:26 -0500)
committerJoerg Roedel <joerg.roedel@amd.com>
Fri, 27 Mar 2026 18:55:52 +0000 (19:55 +0100)
The function platform_irq_count() returns negative error codes and
iommu->irqs_count is an unsigned integer, so the check
(iommu->irqs_count <= 0) is always impossible.

Make the return value of platform_irq_count() be assigned to ret, check
for error, and then assign iommu->irqs_count to ret.

Detected by Smatch:
drivers/iommu/riscv/iommu-platform.c:119 riscv_iommu_platform_probe() warn:
'iommu->irqs_count' unsigned <= 0

Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Fixes: 5c0ebbd3c6c6 ("iommu/riscv: Add RISC-V IOMMU platform device driver")
Reviewed-by: Andrew Jones <andrew.jones@oss.qualcomm.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/riscv/iommu-platform.c

index 8f15b06e8499741153407da8743a723f2215aa01..399ba8fe1b3e5522dfe2b14185d48beba35febf9 100644 (file)
@@ -115,10 +115,13 @@ msi_fail:
                fallthrough;
 
        case RISCV_IOMMU_CAPABILITIES_IGS_WSI:
-               iommu->irqs_count = platform_irq_count(pdev);
-               if (iommu->irqs_count <= 0)
+               ret = platform_irq_count(pdev);
+               if (ret <= 0)
                        return dev_err_probe(dev, -ENODEV,
                                             "no IRQ resources provided\n");
+
+               iommu->irqs_count = ret;
+
                if (iommu->irqs_count > RISCV_IOMMU_INTR_COUNT)
                        iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;