Hi Krzysztof, On Fri, Aug 23, 2024 at 2:51 PM Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote: > Obtain the device node reference with scoped/cleanup.h to reduce error > handling and make the code a bit simpler. > > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> Revisiting an old patch (the same applies to 10/10)... > --- a/drivers/pmdomain/renesas/rcar-gen4-sysc.c > +++ b/drivers/pmdomain/renesas/rcar-gen4-sysc.c > @@ -6,6 +6,7 @@ > */ > > #include <linux/bits.h> > +#include <linux/cleanup.h> > #include <linux/clk/renesas.h> > #include <linux/delay.h> > #include <linux/err.h> > @@ -303,12 +304,12 @@ static int __init rcar_gen4_sysc_pd_init(void) > const struct rcar_gen4_sysc_info *info; > const struct of_device_id *match; > struct rcar_gen4_pm_domains *domains; > - struct device_node *np; > void __iomem *base; > unsigned int i; > int error; > > - np = of_find_matching_node_and_match(NULL, rcar_gen4_sysc_matches, &match); > + struct device_node *np __free(device_node) = > + of_find_matching_node_and_match(NULL, rcar_gen4_sysc_matches, &match); > if (!np) > return -ENODEV; [...] > @@ -369,14 +365,12 @@ static int __init rcar_gen4_sysc_pd_init(void) > if (error) { > pr_warn("Failed to add PM subdomain %s to parent %u\n", > area->name, area->parent); > - goto out_put; > + return error; > } > } > > error = of_genpd_add_provider_onecell(np, &domains->onecell_data); np is passed to of_genpd_add_provider_onecell(), which stores a copy for later use, so I think it must not be released in case of success? I.e. both the old and the new code are wrong? > > -out_put: > - of_node_put(np); > return error; > } > early_initcall(rcar_gen4_sysc_pd_init); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds