clk: meson: add some error handling in meson_clk_register_cpu()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 11 Jun 2015 15:20:46 +0000 (18:20 +0300)
committerStephen Boyd <sboyd@codeaurora.org>
Fri, 12 Jun 2015 21:30:19 +0000 (14:30 -0700)
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>
drivers/clk/meson/clk-cpu.c

index 148e99fc5970d9c5b696b08c0438a8c0cf8df789..71ad493b94df0cbb344b9e259c0c77304074f143 100644 (file)
@@ -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);
 }