]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
clk: samsung: Switch to use kmemdup_array()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 6 Jun 2024 16:09:33 +0000 (19:09 +0300)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Sun, 16 Jun 2024 07:20:48 +0000 (09:20 +0200)
Let the kememdup_array() take care about multiplication and possible
overflows.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20240606161028.2986587-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
drivers/clk/samsung/clk-cpu.c
drivers/clk/samsung/clk-pll.c

index fbf4c4208e06ac312906571af5ec7585238d38f7..dfa149e648aac05d61751d445777482c8c3ed9c7 100644 (file)
@@ -689,8 +689,8 @@ static int __init exynos_register_cpu_clock(struct samsung_clk_provider *ctx,
        for (num_cfgs = 0; clk_data->cfg[num_cfgs].prate != 0; )
                num_cfgs++;
 
-       cpuclk->cfg = kmemdup(clk_data->cfg, sizeof(*clk_data->cfg) * num_cfgs,
-                             GFP_KERNEL);
+       cpuclk->cfg = kmemdup_array(clk_data->cfg, num_cfgs, sizeof(*cpuclk->cfg),
+                                   GFP_KERNEL);
        if (!cpuclk->cfg) {
                ret = -ENOMEM;
                goto unregister_clk_nb;
index 4bbdf5e91650f37da84e38ce16388cf12e851ea5..4be879ab917e127ca69983d453ff74b2193eb579 100644 (file)
@@ -1286,10 +1286,10 @@ static void __init _samsung_clk_register_pll(struct samsung_clk_provider *ctx,
                        len++;
 
                pll->rate_count = len;
-               pll->rate_table = kmemdup(pll_clk->rate_table,
-                                       pll->rate_count *
-                                       sizeof(struct samsung_pll_rate_table),
-                                       GFP_KERNEL);
+               pll->rate_table = kmemdup_array(pll_clk->rate_table,
+                                               pll->rate_count,
+                                               sizeof(*pll->rate_table),
+                                               GFP_KERNEL);
                WARN(!pll->rate_table,
                        "%s: could not allocate rate table for %s\n",
                        __func__, pll_clk->name);