Commit 553a127c authored by Ethan Tidmore's avatar Ethan Tidmore Committed by Joerg Roedel
Browse files

iommu/riscv: Fix signedness bug



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: default avatarEthan Tidmore <ethantidmore06@gmail.com>
Fixes: 5c0ebbd3 ("iommu/riscv: Add RISC-V IOMMU platform device driver")
Reviewed-by: default avatarAndrew Jones <andrew.jones@oss.qualcomm.com>
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent b2e56845
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -115,10 +115,13 @@ static int riscv_iommu_platform_probe(struct platform_device *pdev)
		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;