iommu/arm-smmu-v3: Avoid open coded arithmetic in memory allocation
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Mon, 7 Feb 2022 22:50:48 +0000 (23:50 +0100)
committerWill Deacon <will@kernel.org>
Tue, 8 Feb 2022 15:55:05 +0000 (15:55 +0000)
kmalloc_array()/kcalloc() should be used to avoid potential overflow when
a multiplication is needed to compute the size of the requested memory.

So turn a devm_kzalloc()+explicit size computation into an equivalent
devm_kcalloc().

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/3f7b9b202c6b6f5edc234ab7af5f208fbf8bc944.1644274051.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c

index 6dc6d8b..14d06aa 100644 (file)
@@ -2981,10 +2981,10 @@ static int arm_smmu_init_l1_strtab(struct arm_smmu_device *smmu)
 {
        unsigned int i;
        struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg;
-       size_t size = sizeof(*cfg->l1_desc) * cfg->num_l1_ents;
        void *strtab = smmu->strtab_cfg.strtab;
 
-       cfg->l1_desc = devm_kzalloc(smmu->dev, size, GFP_KERNEL);
+       cfg->l1_desc = devm_kcalloc(smmu->dev, cfg->num_l1_ents,
+                                   sizeof(*cfg->l1_desc), GFP_KERNEL);
        if (!cfg->l1_desc)
                return -ENOMEM;