UPSTREAM: iommu/rockchip: Fix allocation of bases array in driver probe
[firefly-linux-kernel-4.4.55.git] / drivers / iommu / rockchip-iommu.c
index 6c907698c9d135d8836446e46f9d059d61b86a23..41761d223175d86e64ef9109b0455e25008da0c1 100644 (file)
@@ -1041,6 +1041,7 @@ static int rk_iommu_probe(struct platform_device *pdev)
        struct device *dev = &pdev->dev;
        struct rk_iommu *iommu;
        struct resource *res;
+       int num_res = pdev->num_resources;
        int i;
 
        iommu = devm_kzalloc(dev, sizeof(*iommu), GFP_KERNEL);
@@ -1050,12 +1051,13 @@ static int rk_iommu_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, iommu);
        iommu->dev = dev;
        iommu->num_mmu = 0;
-       iommu->bases = devm_kzalloc(dev, sizeof(*iommu->bases) * iommu->num_mmu,
+
+       iommu->bases = devm_kzalloc(dev, sizeof(*iommu->bases) * num_res,
                                    GFP_KERNEL);
        if (!iommu->bases)
                return -ENOMEM;
 
-       for (i = 0; i < pdev->num_resources; i++) {
+       for (i = 0; i < num_res; i++) {
                res = platform_get_resource(pdev, IORESOURCE_MEM, i);
                if (!res)
                        continue;