Re: [PATCH] mips/kernel: Add missing of_node_get()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Liang,

CC devicetree

On Wed, Jun 22, 2022 at 8:08 AM Liang He <windhl@xxxxxxx> wrote:
> In mips_cpc_default_phys_base(), we need to add of_node_get() before
> of_find_compatible_node() which will decrease the refcount of its
> first arg.
>
> Signed-off-by: Liang He <windhl@xxxxxxx>

Thanks for your patch!

> --- a/arch/mips/kernel/mips-cpc.c
> +++ b/arch/mips/kernel/mips-cpc.c
> @@ -25,6 +25,7 @@ phys_addr_t __weak mips_cpc_default_phys_base(void)
>         struct resource res;
>         int err;
>
> +       of_node_get(of_root);

Adding this looks strange to me...

However, of_find_compatible_node() indeed calls of_node_put(from),
so your patch is correct.

However, when passed NULL as the from pointer, __of_find_all_nodes()
(expanded from for_each_of_allnodes_from()) turns this into of_root.
As of_find_compatible_node() still has the original (NULL) from
pointer, of_node_put(from) becomes a no-op.

>         cpc_node = of_find_compatible_node(of_root, NULL, "mti,mips-cpc");

Hence I think it would be better to change the above to

    cpc_node = of_find_compatible_node(NULL, NULL, "mti,mips-cpc");

instead, i.e. get rid of the explicit of_root handling?

>         if (cpc_node) {
>                 err = of_address_to_resource(cpc_node, 0, &res);

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



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux