Re: [PATCH 3/3] clk: rockchip: Correct the behaviour of restoring cached phase

Heiko Stuebner
2018-03-23T08:19:28Z

Am Mittwoch, 21. März 2018, 03:39:20 CET schrieb Shawn Lin:
> We can't restore every phase, for instance the invalid phase and
> the phase for coming rate which is out of the scope of boards'
> ability. And this patch also corrects the error path to return
> invalid pointer to clk if clk_notifier_register failed introduced
> by the same offending commit.
>
> Fixes: 60cf09e45fbc ("clk: rockchip: Restore the clock phase after the rate was changed")
> Reported-by: wlq <wlq-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
> Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
> Tested-by: wlq <wlq-TNX95d0MmH7DzftRWevZcw@public.gmane.org>

I've split off the part below [fix for error handling] into a separate
patch and applied both patches for 4.17

Thanks
Heiko

> @@ -211,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;
> @@ -225,5 +239,5 @@ struct clk *rockchip_clk_register_mmc(const char *name,
> clk_unregister(clk);
> err_register:
> kfree(mmc_clock);
> - return clk;
> + return ERR_PTR(ret);
> }
>