[PATCH] powerpc/powermac/udbg_scc: Fix refcount leak bug in udbg_scc_init()

Benjamin Herrenschmidt benh at kernel.crashing.org
Tue Aug 2 14:50:32 AEST 2022


On Sat, 2022-07-16 at 15:43 +0800, Liang He wrote:
> During the iteration of for_each_child_of_node(), we need to call
> of_node_put() for the old references stored in to 'ch_def' and 'ch_a'
> as their refcounters have been increased in last iteration.

None of these matter since those nodes are never *ever* released and
those machines don't use dynamic node allocation but ...

> Fixes: 51d3082fe6e5 ("[PATCH] powerpc: Unify udbg (#2)")
> Signed-off-by: Liang He <windhl at 126.com>
> ---
>  arch/powerpc/platforms/powermac/udbg_scc.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/powermac/udbg_scc.c
> b/arch/powerpc/platforms/powermac/udbg_scc.c
> index 734df5a32f99..1b7c39e841ee 100644
> --- a/arch/powerpc/platforms/powermac/udbg_scc.c
> +++ b/arch/powerpc/platforms/powermac/udbg_scc.c
> @@ -81,10 +81,14 @@ void __init udbg_scc_init(int force_scc)
>  	if (path != NULL)
>  		stdout = of_find_node_by_path(path);
>  	for_each_child_of_node(escc, ch) {
> -		if (ch == stdout)
> +		if (ch == stdout) {
> +			of_node_put(ch_def);
>  			ch_def = of_node_get(ch);
> -		if (of_node_name_eq(ch, "ch-a"))
> +		}
> +		if (of_node_name_eq(ch, "ch-a")) {
> +			of_node_put(ch_a);
>  			ch_a = of_node_get(ch);
> +		}
>  	}
>  	if (ch_def == NULL && !force_scc)
>  		goto bail;



More information about the Linuxppc-dev mailing list