drivers/clk/spear/clk-vco-pll.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
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
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
© 2016 - 2026 Red Hat, Inc.