2020-07-28 06:18:44

by Jing Xiangfeng

[permalink] [raw]
Subject: [PATCH v2] clk: ti: clkctrl: fix the missed kfree() for _ti_omap4_clkctrl_setup()

_ti_omap4_clkctrl_setup() misses to call kfree() in an error path. Jump
to cleanup to fix it.

Fixes: 6c3090520554 ("clk: ti: clkctrl: Fix hidden dependency to node name")
Signed-off-by: Jing Xiangfeng <[email protected]>
---
drivers/clk/ti/clkctrl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
index 864c484bde1b..a562261eb061 100644
--- a/drivers/clk/ti/clkctrl.c
+++ b/drivers/clk/ti/clkctrl.c
@@ -656,7 +656,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)

hw = kzalloc(sizeof(*hw), GFP_KERNEL);
if (!hw)
- return;
+ goto cleanup;

hw->enable_reg.ptr = provider->base + reg_data->offset;

--
2.17.1


2020-10-14 17:44:19

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH v2] clk: ti: clkctrl: fix the missed kfree() for _ti_omap4_clkctrl_setup()

Quoting Jing Xiangfeng (2020-07-27 23:18:46)
> _ti_omap4_clkctrl_setup() misses to call kfree() in an error path. Jump
> to cleanup to fix it.
>
> Fixes: 6c3090520554 ("clk: ti: clkctrl: Fix hidden dependency to node name")
> Signed-off-by: Jing Xiangfeng <[email protected]>
> ---
> drivers/clk/ti/clkctrl.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
> index 864c484bde1b..a562261eb061 100644
> --- a/drivers/clk/ti/clkctrl.c
> +++ b/drivers/clk/ti/clkctrl.c
> @@ -656,7 +656,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
>
> hw = kzalloc(sizeof(*hw), GFP_KERNEL);
> if (!hw)
> - return;
> + goto cleanup;

Nobody reviewed this so I didn't apply it. I looked closer and it seems
that this may fix one leak but this is inside a while loop so presumably
we need to goto cleanup and unwind the loop of allocations? Put another
way, there is more work to do here.