On Fri, May 28, 2021 at 1:08 PM Pavel Machek <pavel@xxxxxx> wrote: > > @@ -734,10 +736,15 @@ static int sso_led_dt_parse(struct sso_led_priv *priv) > > if (fw_ssoled) { > > ret = __sso_led_dt_parse(priv, fw_ssoled); > > if (ret) > > - return ret; > > + goto err_child_out; > > } > > > > + fwnode_handle_put(fw_ssoled); > > return 0; > > + > > +err_child_out: > > + fwnode_handle_put(fw_ssoled); > > + return ret; > > } > > Just delete the return and you get the same effect, no? No need to > have two exits here. Okay, I have tried and neither result is better: option 1. Add ret = 0, but keep the label option 2. Assign 0 to ret at the definition stage and replace return with break and remove return 0 (I don't like that ret assigned to 0 in the definition block. It usually may lead to subtle errors) option 3+. Something I missed which you see can be done? Which one do you prefer? -- With Best Regards, Andy Shevchenko