clk: bm1880: remove kfrees on static allocations
authorConor Dooley <conor.dooley@microchip.com>
Thu, 23 Dec 2021 15:42:44 +0000 (15:42 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:04:20 +0000 (11:04 +0100)
[ Upstream commit c861c1be3897845313a0df47804b1db37c7052e1 ]

bm1880_clk_unregister_pll & bm1880_clk_unregister_div both try to
free statically allocated variables, so remove those kfrees.

For example, if we take L703 kfree(div_hw):
- div_hw is a bm1880_div_hw_clock pointer
- in bm1880_clk_register_plls this is pointed to an element of arg1:
  struct bm1880_div_hw_clock *clks
- in the probe, where bm1880_clk_register_plls is called arg1 is
  bm1880_div_clks, defined on L371:
  static struct bm1880_div_hw_clock bm1880_div_clks[]

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Fixes: 1ab4601da55b ("clk: Add common clock driver for BM1880 SoC")
Link: https://lore.kernel.org/r/20211223154244.1024062-1-conor.dooley@microchip.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/clk-bm1880.c

index e6d6599..fad78a2 100644 (file)
@@ -522,14 +522,6 @@ static struct clk_hw *bm1880_clk_register_pll(struct bm1880_pll_hw_clock *pll_cl
        return hw;
 }
 
-static void bm1880_clk_unregister_pll(struct clk_hw *hw)
-{
-       struct bm1880_pll_hw_clock *pll_hw = to_bm1880_pll_clk(hw);
-
-       clk_hw_unregister(hw);
-       kfree(pll_hw);
-}
-
 static int bm1880_clk_register_plls(struct bm1880_pll_hw_clock *clks,
                                    int num_clks,
                                    struct bm1880_clock_data *data)
@@ -555,7 +547,7 @@ static int bm1880_clk_register_plls(struct bm1880_pll_hw_clock *clks,
 
 err_clk:
        while (i--)
-               bm1880_clk_unregister_pll(data->hw_data.hws[clks[i].pll.id]);
+               clk_hw_unregister(data->hw_data.hws[clks[i].pll.id]);
 
        return PTR_ERR(hw);
 }
@@ -695,14 +687,6 @@ static struct clk_hw *bm1880_clk_register_div(struct bm1880_div_hw_clock *div_cl
        return hw;
 }
 
-static void bm1880_clk_unregister_div(struct clk_hw *hw)
-{
-       struct bm1880_div_hw_clock *div_hw = to_bm1880_div_clk(hw);
-
-       clk_hw_unregister(hw);
-       kfree(div_hw);
-}
-
 static int bm1880_clk_register_divs(struct bm1880_div_hw_clock *clks,
                                    int num_clks,
                                    struct bm1880_clock_data *data)
@@ -729,7 +713,7 @@ static int bm1880_clk_register_divs(struct bm1880_div_hw_clock *clks,
 
 err_clk:
        while (i--)
-               bm1880_clk_unregister_div(data->hw_data.hws[clks[i].div.id]);
+               clk_hw_unregister(data->hw_data.hws[clks[i].div.id]);
 
        return PTR_ERR(hw);
 }