Re: [PATCH] powerpc/powermac/udbg_scc: Fix refcount leak bug in udbg_scc_init()
On Sat, 16 Jul 2022 15:43:44 +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. > > Applied to powerpc/next. [1/1] powerpc/powermac/udbg_scc: Fix refcount leak bug in udbg_scc_init() https://git.kernel.org/powerpc/c/2378bf144b841df548161af49bf1ff393dc60d44 cheers
Re: [PATCH] powerpc/powermac/udbg_scc: Fix refcount leak bug in udbg_scc_init()
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 > --- > 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;
[PATCH] powerpc/powermac/udbg_scc: Fix refcount leak bug in udbg_scc_init()
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. Fixes: 51d3082fe6e5 ("[PATCH] powerpc: Unify udbg (#2)") Signed-off-by: Liang He --- 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; -- 2.25.1