kstrndup() and kstrdup_and_replace() in clkctrl_get_name() can perform
dynamic memory allocation. So clkctrl_name() needs to be freed when
provider->clkdm_name is NULL.
Fixes: bd46cd0b802d ("clk: ti: clkctrl: check return value of kasprintf()")
Signed-off-by: Hangyu Hua <[email protected]>
---
v2: fix commit info.
drivers/clk/ti/clkctrl.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
index 607e34d8e289..cb4aa8a45bb2 100644
--- a/drivers/clk/ti/clkctrl.c
+++ b/drivers/clk/ti/clkctrl.c
@@ -591,6 +591,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
provider->clkdm_name = kasprintf(GFP_KERNEL,
"%s_clkdm", clkctrl_name);
if (!provider->clkdm_name) {
+ kfree(clkctrl_name);
kfree(provider);
return;
}
--
2.34.1
On 27.10.2023 05:50, Hangyu Hua wrote:
> kstrndup() and kstrdup_and_replace() in clkctrl_get_name() can perform
> dynamic memory allocation. So clkctrl_name() needs to be freed when
s/clkctrl_name()/clkctrl_name
> provider->clkdm_name is NULL.
>
> Fixes: bd46cd0b802d ("clk: ti: clkctrl: check return value of kasprintf()")
> Signed-off-by: Hangyu Hua <[email protected]>
> ---
>
> v2: fix commit info.
>
> drivers/clk/ti/clkctrl.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
> index 607e34d8e289..cb4aa8a45bb2 100644
> --- a/drivers/clk/ti/clkctrl.c
> +++ b/drivers/clk/ti/clkctrl.c
> @@ -591,6 +591,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
> provider->clkdm_name = kasprintf(GFP_KERNEL,
> "%s_clkdm", clkctrl_name);
> if (!provider->clkdm_name) {
> + kfree(clkctrl_name);
> kfree(provider);
> return;
> }