diff mbox series

[v3] pinctrl: thunderbay: fix possible memory leak in thunderbay_build_functions()

Message ID 20221129120126.1567338-1-cuigaosheng1@huawei.com
State New
Headers show
Series [v3] pinctrl: thunderbay: fix possible memory leak in thunderbay_build_functions() | expand

Commit Message

cuigaosheng Nov. 29, 2022, 12:01 p.m. UTC
The thunderbay_add_functions() will free memory of thunderbay_funcs
when everything is ok, but thunderbay_funcs will not be freed when
thunderbay_add_functions() fails, then there will be a memory leak,
so we need to add kfree() when thunderbay_add_functions() fails to
fix it.

In addition, doing some cleaner works, moving kfree(funcs) from
thunderbay_add_functions() to thunderbay_build_functions().

Fixes: 12422af8194d ("pinctrl: Add Intel Thunder Bay pinctrl driver")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
---
v3:
- Doing some cleaner works, moving kfree(funcs) from thunderbay_add_functions()
  to thunderbay_build_functions(), and update the commit message, thanks!
v2:
- Free the memory in thunderbay_build_functions, and update the commit
  message and the fixes tag, thanks!
 drivers/pinctrl/pinctrl-thunderbay.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

D, Lakshmi Sowjanya Nov. 29, 2022, 12:09 p.m. UTC | #1
> -----Original Message-----
> From: Gaosheng Cui <cuigaosheng1@huawei.com>
> Sent: Tuesday, November 29, 2022 5:31 PM
> To: D, Lakshmi Sowjanya <lakshmi.sowjanya.d@intel.com>;
> linus.walleij@linaro.org; S, Kiran Kumar1 <kiran.kumar1.s@intel.com>;
> rafal@milecki.pl; cuigaosheng1@huawei.com
> Cc: linux-gpio@vger.kernel.org
> Subject: [PATCH v3] pinctrl: thunderbay: fix possible memory leak in
> thunderbay_build_functions()
> 
> The thunderbay_add_functions() will free memory of thunderbay_funcs
> when everything is ok, but thunderbay_funcs will not be freed when
> thunderbay_add_functions() fails, then there will be a memory leak, so we
> need to add kfree() when thunderbay_add_functions() fails to fix it.
> 
> In addition, doing some cleaner works, moving kfree(funcs) from
> thunderbay_add_functions() to thunderbay_build_functions().
> 
> Fixes: 12422af8194d ("pinctrl: Add Intel Thunder Bay pinctrl driver")
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
> ---
> v3:
> - Doing some cleaner works, moving kfree(funcs) from
> thunderbay_add_functions()
>   to thunderbay_build_functions(), and update the commit message, thanks!
> v2:
> - Free the memory in thunderbay_build_functions, and update the commit
>   message and the fixes tag, thanks!
>  drivers/pinctrl/pinctrl-thunderbay.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pinctrl/pinctrl-thunderbay.c b/drivers/pinctrl/pinctrl-
> thunderbay.c
> index 9328b17485cf..590bbbf619af 100644
> --- a/drivers/pinctrl/pinctrl-thunderbay.c
> +++ b/drivers/pinctrl/pinctrl-thunderbay.c
> @@ -808,7 +808,7 @@ static int thunderbay_add_functions(struct
> thunderbay_pinctrl *tpc, struct funct
>  					    funcs[i].num_group_names,
>  					    funcs[i].data);
>  	}
> -	kfree(funcs);
> +
>  	return 0;
>  }
> 
> @@ -817,6 +817,7 @@ static int thunderbay_build_functions(struct
> thunderbay_pinctrl *tpc)
>  	struct function_desc *thunderbay_funcs;
>  	void *ptr;
>  	int pin;
> +	int ret;
> 
>  	/*
>  	 * Allocate maximum possible number of functions. Assume every
> pin @@ -860,7 +861,10 @@ static int thunderbay_build_functions(struct
> thunderbay_pinctrl *tpc)
>  		return -ENOMEM;
> 
>  	thunderbay_funcs = ptr;
> -	return thunderbay_add_functions(tpc, thunderbay_funcs);
> +	ret = thunderbay_add_functions(tpc, thunderbay_funcs);
> +
> +	kfree(thunderbay_funcs);
> +	return ret;
>  }
> 
>  static int thunderbay_pinconf_set_tristate(struct thunderbay_pinctrl *tpc,
> --
> 2.25.1
 
Thanks for the changes suggested, but pinctrl-thunderbay.c file will soon be removed from opensource kernel

Regards
Lakshmi Sowjanya D
Rafał Miłecki Nov. 29, 2022, 12:12 p.m. UTC | #2
On 2022-11-29 13:01, Gaosheng Cui wrote:
> The thunderbay_add_functions() will free memory of thunderbay_funcs
> when everything is ok, but thunderbay_funcs will not be freed when
> thunderbay_add_functions() fails, then there will be a memory leak,
> so we need to add kfree() when thunderbay_add_functions() fails to
> fix it.
> 
> In addition, doing some cleaner works, moving kfree(funcs) from
> thunderbay_add_functions() to thunderbay_build_functions().
> 
> Fixes: 12422af8194d ("pinctrl: Add Intel Thunder Bay pinctrl driver")
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>

FWIW:
Reviewed-by: Rafał Miłecki <rafal@milecki.pl>

(not sure about pinctrl-thunderbay.c removal plans)
Linus Walleij Dec. 6, 2022, 2:28 p.m. UTC | #3
On Tue, Nov 29, 2022 at 1:01 PM Gaosheng Cui <cuigaosheng1@huawei.com> wrote:

> The thunderbay_add_functions() will free memory of thunderbay_funcs
> when everything is ok, but thunderbay_funcs will not be freed when
> thunderbay_add_functions() fails, then there will be a memory leak,
> so we need to add kfree() when thunderbay_add_functions() fails to
> fix it.
>
> In addition, doing some cleaner works, moving kfree(funcs) from
> thunderbay_add_functions() to thunderbay_build_functions().
>
> Fixes: 12422af8194d ("pinctrl: Add Intel Thunder Bay pinctrl driver")
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
> ---
> v3:
> - Doing some cleaner works, moving kfree(funcs) from thunderbay_add_functions()
>   to thunderbay_build_functions(), and update the commit message, thanks!

Patch applied as non-urgent fix.

Yours,
Linus Walleij
Linus Walleij Dec. 6, 2022, 2:31 p.m. UTC | #4
On Tue, Nov 29, 2022 at 1:09 PM D, Lakshmi Sowjanya
<lakshmi.sowjanya.d@intel.com> wrote:

> Thanks for the changes suggested, but pinctrl-thunderbay.c file will soon be removed from opensource kernel

Why? Is the product cancelled?

Yours,
Linus Walleij
D, Lakshmi Sowjanya Dec. 14, 2022, 4:46 a.m. UTC | #5
> -----Original Message-----
> From: Linus Walleij <linus.walleij@linaro.org>
> Sent: Tuesday, December 6, 2022 8:01 PM
> To: D, Lakshmi Sowjanya <lakshmi.sowjanya.d@intel.com>
> Cc: Gaosheng Cui <cuigaosheng1@huawei.com>; S, Kiran Kumar1
> <kiran.kumar1.s@intel.com>; rafal@milecki.pl; linux-gpio@vger.kernel.org; N,
> Pandith <pandith.n@intel.com>
> Subject: Re: [PATCH v3] pinctrl: thunderbay: fix possible memory leak in
> thunderbay_build_functions()
> 
> On Tue, Nov 29, 2022 at 1:09 PM D, Lakshmi Sowjanya
> <lakshmi.sowjanya.d@intel.com> wrote:
> 
> > Thanks for the changes suggested, but pinctrl-thunderbay.c file will
> > soon be removed from opensource kernel
> 
> Why? Is the product cancelled?
> 
> Yours,
> Linus Walleij

Yes, Thunder Bay project is closed.

Regards
Lakshmi Sowjanya D
diff mbox series

Patch

diff --git a/drivers/pinctrl/pinctrl-thunderbay.c b/drivers/pinctrl/pinctrl-thunderbay.c
index 9328b17485cf..590bbbf619af 100644
--- a/drivers/pinctrl/pinctrl-thunderbay.c
+++ b/drivers/pinctrl/pinctrl-thunderbay.c
@@ -808,7 +808,7 @@  static int thunderbay_add_functions(struct thunderbay_pinctrl *tpc, struct funct
 					    funcs[i].num_group_names,
 					    funcs[i].data);
 	}
-	kfree(funcs);
+
 	return 0;
 }
 
@@ -817,6 +817,7 @@  static int thunderbay_build_functions(struct thunderbay_pinctrl *tpc)
 	struct function_desc *thunderbay_funcs;
 	void *ptr;
 	int pin;
+	int ret;
 
 	/*
 	 * Allocate maximum possible number of functions. Assume every pin
@@ -860,7 +861,10 @@  static int thunderbay_build_functions(struct thunderbay_pinctrl *tpc)
 		return -ENOMEM;
 
 	thunderbay_funcs = ptr;
-	return thunderbay_add_functions(tpc, thunderbay_funcs);
+	ret = thunderbay_add_functions(tpc, thunderbay_funcs);
+
+	kfree(thunderbay_funcs);
+	return ret;
 }
 
 static int thunderbay_pinconf_set_tristate(struct thunderbay_pinctrl *tpc,