Re: [PATCH resent] clk: at91: sama7g5: Add two jump labels in sama7g5_pmc_setup()

From: Nicolas Ferre
Date: Tue Mar 28 2023 - 04:30:52 EST


On 25/03/2023 at 15:05, Markus Elfring wrote:
Date: Fri, 17 Mar 2023 20:02:34 +0100

The label “err_free” was used to jump to another pointer check despite of
the detail in the implementation of the function “sama7g5_pmc_setup”
that it was determined already that the corresponding variable contained
a null pointer (because of a failed memory allocation).

* Thus use additional labels.

* Delete an extra pointer check at the end which became unnecessary
with this refactoring.

This issue was detected by using the Coccinelle software.

Fine, but I'm sorry that it complexity the function for no real value. Other clk drivers have the same pattern so I want them to all stay the same.

This is a NACK, sorry about that.

Regards,
Nicolas

Fixes: cb783bbbcf54c36256006895c215e86c5e7266d8 ("clk: at91: sama7g5: add clock support for sama7g5")
Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
---
drivers/clk/at91/sama7g5.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/clk/at91/sama7g5.c b/drivers/clk/at91/sama7g5.c
index f135b662f1ff..224b1f2ebef2 100644
--- a/drivers/clk/at91/sama7g5.c
+++ b/drivers/clk/at91/sama7g5.c
@@ -927,25 +927,25 @@ static void __init sama7g5_pmc_setup(struct device_node *np)
(ARRAY_SIZE(sama7g5_mckx) + ARRAY_SIZE(sama7g5_gck)),
GFP_KERNEL);
if (!alloc_mem)
- goto err_free;
+ goto free_pmc;

hw = at91_clk_register_main_rc_osc(regmap, "main_rc_osc", 12000000,
50000000);
if (IS_ERR(hw))
- goto err_free;
+ goto free_alloc_mem;

bypass = of_property_read_bool(np, "atmel,osc-bypass");

hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name,
bypass);
if (IS_ERR(hw))
- goto err_free;
+ goto free_alloc_mem;

parent_names[0] = "main_rc_osc";
parent_names[1] = "main_osc";
hw = at91_clk_register_sam9x5_main(regmap, "mainck", parent_names, 2);
if (IS_ERR(hw))
- goto err_free;
+ goto free_alloc_mem;

sama7g5_pmc->chws[PMC_MAIN] = hw;

@@ -987,7 +987,7 @@ static void __init sama7g5_pmc_setup(struct device_node *np)
}

if (IS_ERR(hw))
- goto err_free;
+ goto free_alloc_mem;

if (sama7g5_plls[i][j].eid)
sama7g5_pmc->chws[sama7g5_plls[i][j].eid] = hw;
@@ -999,7 +999,7 @@ static void __init sama7g5_pmc_setup(struct device_node *np)
&mck0_layout, &mck0_characteristics,
&pmc_mck0_lock, CLK_GET_RATE_NOCACHE, 5);
if (IS_ERR(hw))
- goto err_free;
+ goto free_alloc_mem;

sama7g5_pmc->chws[PMC_MCK] = hw;

@@ -1128,12 +1128,11 @@ static void __init sama7g5_pmc_setup(struct device_node *np)
return;

err_free:
- if (alloc_mem) {
- for (i = 0; i < alloc_mem_size; i++)
- kfree(alloc_mem[i]);
- kfree(alloc_mem);
- }
-
+ for (i = 0; i < alloc_mem_size; i++)
+ kfree(alloc_mem[i]);
+free_alloc_mem:
+ kfree(alloc_mem);
+free_pmc:
kfree(sama7g5_pmc);
}

--
2.40.0


--
Nicolas Ferre