> Hi, > > On Sun, Oct 18, 2020 at 03:28:10PM +0800, Dinghao Liu wrote: > > When clk_hw_register_fixed_rate_with_accuracy() fails, > > clk_data should be freed. It's the same for the subsequent > > two error paths, but we should also unregister the already > > registered clocks in them. > > > > Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> > > --- > > > > Changelog: > > > > v2: - Unregister the already registered clocks on failure. > > --- > > drivers/rtc/rtc-sun6i.c | 8 +++++--- > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c > > index e2b8b150bcb4..6de0d3ad736a 100644 > > --- a/drivers/rtc/rtc-sun6i.c > > +++ b/drivers/rtc/rtc-sun6i.c > > @@ -272,7 +272,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node, > > 300000000); > > if (IS_ERR(rtc->int_osc)) { > > pr_crit("Couldn't register the internal oscillator\n"); > > - return; > > + goto err; > > } > > > > parents[0] = clk_hw_get_name(rtc->int_osc); > > @@ -290,7 +290,8 @@ static void __init sun6i_rtc_clk_init(struct device_node *node, > > rtc->losc = clk_register(NULL, &rtc->hw); > > if (IS_ERR(rtc->losc)) { > > pr_crit("Couldn't register the LOSC clock\n"); > > - return; > > + clk_hw_unregister_fixed_rate(rtc->int_osc); > > + goto err; > > } > > The point of having labels for the error sequence is to avoid to > duplicate the error handling code in each and every error code path. > > You should add another label for the fixed rate clock unregistration > Fine, I will fix this soon. Regards, Dinghao