From: Nicolin Chen Date: Sat, 21 Mar 2026 22:50:40 +0000 (-0700) Subject: iommu/arm-smmu-v3: Do not continue in __arm_smmu_domain_inv_range() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a01b9f0a5ec38112db54370ce7794db2be5a5de;p=thirdparty%2Fkernel%2Fstable.git iommu/arm-smmu-v3: Do not continue in __arm_smmu_domain_inv_range() The loop in the __arm_smmu_domain_inv_range() is a while loop, not a for loop. So, using "continue" is wrong that would fail to move the needle. Meanwhile, though the current command is skipped, the batch still has to go through arm_smmu_invs_end_batch() to be issued accordingly. Thus, use "break" to fix the issue. Fixes: 587bb3e56a2c ("iommu/arm-smmu-v3: Add arm_smmu_invs based arm_smmu_domain_inv_range()") Signed-off-by: Nicolin Chen Reviewed-by: Jason Gunthorpe Signed-off-by: Will Deacon --- diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 01030ffd2fe2..c3c6987da950 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2688,7 +2688,7 @@ static void __arm_smmu_domain_inv_range(struct arm_smmu_invs *invs, case INV_TYPE_S2_VMID_S1_CLEAR: /* CMDQ_OP_TLBI_S12_VMALL already flushed S1 entries */ if (arm_smmu_inv_size_too_big(cur->smmu, size, granule)) - continue; + break; cmd.tlbi.vmid = cur->id; arm_smmu_cmdq_batch_add(smmu, &cmds, &cmd); break; @@ -2704,7 +2704,7 @@ static void __arm_smmu_domain_inv_range(struct arm_smmu_invs *invs, break; default: WARN_ON_ONCE(1); - continue; + break; } /* Skip any trash entry in-between */