On Thu, Oct 21, 2021 at 8:43 PM Emil Renner Berthing <kernel@xxxxxxxx> wrote: ... > +static struct clk_hw *clk_starfive_jh7100_get(struct of_phandle_args *clkspec, void *data) > +{ > + struct clk_starfive_jh7100_priv *priv = data; > + unsigned int idx = clkspec->args[0]; > + > + if (idx >= JH7100_CLK_END) { > + dev_err(priv->dev, "invalid clock index %u\n", idx); > + return ERR_PTR(-EINVAL); After this https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=7065f92255bb2468dbb9aa0537ff186ef64d5a02 It's okay to use > + } if (idx >= JH7100_CLK_END) return dev_err_probe(priv->dev, -EINVAL, "invalid clock index %u\n", idx); Ditto for other similar cases. > + if (idx >= JH7100_CLK_PLL0_OUT) > + return priv->pll[idx - JH7100_CLK_PLL0_OUT]; > + > + return &priv->reg[idx].hw; > +} ... > + while (idx) > + clk_hw_unregister(&priv->reg[--idx].hw); I still consider that usual pattern, i.e. while (idx--) clk_hw_unregister(&priv->reg[idx].hw); but since you are pushing hard for your variant I'll leave it to the maintainers and author. -- With Best Regards, Andy Shevchenko