aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2015-06-11 18:20:46 +0300
committerStephen Boyd <sboyd@codeaurora.org>2015-06-12 14:30:19 -0700
commit46965688acd0f9599a3c3ecce82109b3b24153a9 (patch)
treec0addbb02a037605f8ed5e7b392d0adc45cb7e7d /drivers/clk
parentclk: pxa: Fix const discarding warning (diff)
downloadlinux-dev-46965688acd0f9599a3c3ecce82109b3b24153a9.tar.xz
linux-dev-46965688acd0f9599a3c3ecce82109b3b24153a9.zip
clk: meson: add some error handling in meson_clk_register_cpu()
This error handling hopefully isn't needed but it make the static checkers happy. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Carlo Caione <carlo@endlessm.com> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/meson/clk-cpu.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/clk/meson/clk-cpu.c b/drivers/clk/meson/clk-cpu.c
index 148e99fc5970..71ad493b94df 100644
--- a/drivers/clk/meson/clk-cpu.c
+++ b/drivers/clk/meson/clk-cpu.c
@@ -213,22 +213,30 @@ struct clk *meson_clk_register_cpu(const struct clk_conf *clk_conf,
if (!pclk) {
pr_err("%s: could not lookup parent clock %s\n",
__func__, clk_conf->clks_parent[0]);
- return ERR_PTR(-EINVAL);
+ ret = -EINVAL;
+ goto free_clk;
}
ret = clk_notifier_register(pclk, &clk_cpu->clk_nb);
if (ret) {
pr_err("%s: failed to register clock notifier for %s\n",
__func__, clk_conf->clk_name);
- return ERR_PTR(-EINVAL);
+ goto free_clk;
}
clk = clk_register(NULL, &clk_cpu->hw);
if (IS_ERR(clk)) {
- clk_notifier_unregister(pclk, &clk_cpu->clk_nb);
- kfree(clk_cpu);
+ ret = PTR_ERR(clk);
+ goto unregister_clk_nb;
}
return clk;
+
+unregister_clk_nb:
+ clk_notifier_unregister(pclk, &clk_cpu->clk_nb);
+free_clk:
+ kfree(clk_cpu);
+
+ return ERR_PTR(ret);
}