Re: [PATCH v1] bus: ti-sysc: Fix /chosen node reference leak

최유호 <[email protected]> Thu, 2 Jul 2026 17:13:28 -0400
Newsgroups org.kernel.vger.linux-omap,org.kernel.vger.linux-kernel
Message-ID <CACrCO_XcYF=T3kpeUcm_ReHdUXrwd6znPkpmLbonVKTVoNkw+w@mail.gmail.com>
Hi,

Just a gentle ping on this patch.

I would appreciate any feedback when you have a chance to review this.

Thanks

On Mon, 15 Jun 2026 at 16:05, Yuho Choi <[email protected]> wrote:
>
> sysc_init_stdout_path() gets the /chosen node with
> of_find_node_by_path() to read stdout-path. The function then overwrites
> the local node pointer with the stdout-path lookup result, or exits on
> error, without dropping the /chosen reference.
>
> Keep the /chosen node in a separate variable and put it after the
> stdout-path value has been used for the lookup. The successful stdout
> node lookup remains referenced by the cached stdout_path pointer.
>
> Fixes: 3bb37c8e6e6a ("bus: ti-sysc: Handle stdout-path for debug console")
> Signed-off-by: Yuho Choi <[email protected]>
> ---
>  drivers/bus/ti-sysc.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
> index a5b9507de37c..e118b900c9ac 100644
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -682,6 +682,7 @@ static struct device_node *stdout_path;
>
>  static void sysc_init_stdout_path(struct sysc *ddata)
>  {
> +       struct device_node *chosen;
>         struct device_node *np = NULL;
>         const char *uart;
>
> @@ -691,15 +692,18 @@ static void sysc_init_stdout_path(struct sysc *ddata)
>         if (stdout_path)
>                 return;
>
> -       np = of_find_node_by_path("/chosen");
> -       if (!np)
> +       chosen = of_find_node_by_path("/chosen");
> +       if (!chosen)
>                 goto err;
>
> -       uart = of_get_property(np, "stdout-path", NULL);
> -       if (!uart)
> +       uart = of_get_property(chosen, "stdout-path", NULL);
> +       if (!uart) {
> +               of_node_put(chosen);
>                 goto err;
> +       }
>
>         np = of_find_node_by_path(uart);
> +       of_node_put(chosen);
>         if (!np)
>                 goto err;
>
> --
> 2.43.0
>