summaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorShawn Lin <shawn.lin@rock-chips.com>2018-03-21 03:39:20 +0100
committerHeiko Stuebner <heiko@sntech.de>2018-03-23 09:08:43 +0100
commit0d92d1802ced45dab0cbb1d130ace7410bcaec99 (patch)
tree38beed4e362decabef0efa0934fe91a3a34dd23c /drivers/clk
parentclk: rockchip: Correct the behaviour of restoring cached phase (diff)
downloadlinux-0d92d1802ced45dab0cbb1d130ace7410bcaec99.tar.xz
linux-0d92d1802ced45dab0cbb1d130ace7410bcaec99.zip
clk: rockchip: Fix error return in phase clock registration
The newly added clock notifier may return an error code but so far the error output in the function would only return an error pointer from registering the clock. So when the clock notifier fails the clock would be unregistered but the return would still be the clock pointer which could then not be dereferenced correctly. So fix the error handling to prevent that. Fixes: 60cf09e45fbc ("clk: rockchip: Restore the clock phase after the rate was changed") Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/rockchip/clk-mmc-phase.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/clk/rockchip/clk-mmc-phase.c b/drivers/clk/rockchip/clk-mmc-phase.c
index b7b9f2e7d64b..026a26bb702d 100644
--- a/drivers/clk/rockchip/clk-mmc-phase.c
+++ b/drivers/clk/rockchip/clk-mmc-phase.c
@@ -223,8 +223,10 @@ struct clk *rockchip_clk_register_mmc(const char *name,
mmc_clock->shift = shift;
clk = clk_register(NULL, &mmc_clock->hw);
- if (IS_ERR(clk))
+ if (IS_ERR(clk)) {
+ ret = PTR_ERR(clk);
goto err_register;
+ }
mmc_clock->clk_rate_change_nb.notifier_call =
&rockchip_mmc_clk_rate_notify;
@@ -237,5 +239,5 @@ err_notifier:
clk_unregister(clk);
err_register:
kfree(mmc_clock);
- return clk;
+ return ERR_PTR(ret);
}