On 2019/3/9 22:24, Daniel Lezcano wrote: > > Hi Yue, > > I appreciate the fix but usually we add a rollback for all the > operations done in the init function. > > Please, migrate the init function to the timer-of API, so the rollback > will be automatically handled. > > Example here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/clocksource/timer-sprd.c#n197
It seems complicated for me, ttc_setup_clocksource and ttc_setup_clockevent use a different of_clk, hard to use timer_of_init to do a initialization. I'm not familiar with this. Maybe someone else can do this? > > On 09/03/2019 14:19, Yue Haibing wrote: >> From: YueHaibing <[email protected]> >> >> Add the missing kfree() in ttc_setup_clockevent() to free the >> mem before error return. >> >> Fixes: 70504f311d4b ("clocksource/drivers/cadence_ttc: Convert init function >> to return error") >> Signed-off-by: YueHaibing <[email protected]> >> --- >> drivers/clocksource/timer-cadence-ttc.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/clocksource/timer-cadence-ttc.c >> b/drivers/clocksource/timer-cadence-ttc.c >> index b334029..b664af8 100644 >> --- a/drivers/clocksource/timer-cadence-ttc.c >> +++ b/drivers/clocksource/timer-cadence-ttc.c >> @@ -432,6 +432,7 @@ static int __init ttc_setup_clockevent(struct clk *clk, >> &ttcce->ttc.clk_rate_change_nb); >> if (err) { >> pr_warn("Unable to register clock notifier.\n"); >> + kfree(ttcce); >> return err; >> } >> >> > >

