[PATCH] clk: spear: fix resource leak in clk_register_vco_pll()

Haoxiang Li posted 1 patch 1 week, 1 day ago
drivers/clk/spear/clk-vco-pll.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] clk: spear: fix resource leak in clk_register_vco_pll()
Posted by Haoxiang Li 1 week, 1 day ago
Add a goto label in clk_register_vco_pll(), unregister vco_clk
if tpll_clk is failed to be registered.

Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
---
 drivers/clk/spear/clk-vco-pll.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/spear/clk-vco-pll.c b/drivers/clk/spear/clk-vco-pll.c
index 723a6eb67754..ceb82723fa8c 100644
--- a/drivers/clk/spear/clk-vco-pll.c
+++ b/drivers/clk/spear/clk-vco-pll.c
@@ -343,13 +343,15 @@ struct clk *clk_register_vco_pll(const char *vco_name, const char *pll_name,
 
 	tpll_clk = clk_register(NULL, &pll->hw);
 	if (IS_ERR_OR_NULL(tpll_clk))
-		goto free_pll;
+		goto unregister_clk;
 
 	if (pll_clk)
 		*pll_clk = tpll_clk;
 
 	return vco_clk;
 
+unregister_clk:
+	clk_unregister(vco_clk);
 free_pll:
 	kfree(pll);
 free_vco:
-- 
2.25.1
Re: [PATCH] clk: spear: fix resource leak in clk_register_vco_pll()
Posted by Viresh Kumar 1 week, 1 day ago
On 25-03-26, 14:22, Haoxiang Li wrote:
> Add a goto label in clk_register_vco_pll(), unregister vco_clk
> if tpll_clk is failed to be registered.
> 
> Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
> ---
>  drivers/clk/spear/clk-vco-pll.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/spear/clk-vco-pll.c b/drivers/clk/spear/clk-vco-pll.c
> index 723a6eb67754..ceb82723fa8c 100644
> --- a/drivers/clk/spear/clk-vco-pll.c
> +++ b/drivers/clk/spear/clk-vco-pll.c
> @@ -343,13 +343,15 @@ struct clk *clk_register_vco_pll(const char *vco_name, const char *pll_name,
>  
>  	tpll_clk = clk_register(NULL, &pll->hw);
>  	if (IS_ERR_OR_NULL(tpll_clk))
> -		goto free_pll;
> +		goto unregister_clk;
>  
>  	if (pll_clk)
>  		*pll_clk = tpll_clk;
>  
>  	return vco_clk;
>  
> +unregister_clk:
> +	clk_unregister(vco_clk);
>  free_pll:
>  	kfree(pll);
>  free_vco:

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh