Message ID | 20220716073111.539739-1-windhl@126.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | powerpc/powermac/pfunc_base: Fix refcount leak bug in macio_gpio_init_one() | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 10 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 10 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 7 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 23 jobs. |
On Sat, 2022-07-16 at 15:31 +0800, Liang He wrote: > We should call of_node_put() for the reference 'gparent' escaped > out of the for_each_child_of_node() as it has increased the refcount. Same comment as before. That stuff happens once at boot, there's never any dynamic allocation/deallocation of these, they just don't matter, but feel free .... :-) > Fixes: 5b9ca526917b ("[PATCH] 3/5 powerpc: Add platform functions > interpreter") > Signed-off-by: Liang He <windhl@126.com> > --- > arch/powerpc/platforms/powermac/pfunc_base.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c > b/arch/powerpc/platforms/powermac/pfunc_base.c > index 9c2947a3edd5..085e0ad20eba 100644 > --- a/arch/powerpc/platforms/powermac/pfunc_base.c > +++ b/arch/powerpc/platforms/powermac/pfunc_base.c > @@ -136,6 +136,8 @@ static void __init macio_gpio_init_one(struct > macio_chip *macio) > for_each_child_of_node(gparent, gp) > pmf_do_functions(gp, NULL, 0, PMF_FLAGS_ON_INIT, NULL); > > + of_node_put(gparent); > + > /* Note: We do not at this point implement the "at sleep" or > "at wake" > * functions. I yet to find any for GPIOs anyway > */
At 2022-08-02 12:51:08, "Benjamin Herrenschmidt" <benh@kernel.crashing.org> wrote: >On Sat, 2022-07-16 at 15:31 +0800, Liang He wrote: >> We should call of_node_put() for the reference 'gparent' escaped >> out of the for_each_child_of_node() as it has increased the refcount. > >Same comment as before. That stuff happens once at boot, there's never >any dynamic allocation/deallocation of these, they just don't matter, >but feel free .... :-) > Thanks for your reply, this is a valuable lesson for me. I will now begin to learn the detailed difference of dynamic and static allocation. Thanks, Liang >> Fixes: 5b9ca526917b ("[PATCH] 3/5 powerpc: Add platform functions >> interpreter") >> Signed-off-by: Liang He <windhl@126.com> >> --- >> arch/powerpc/platforms/powermac/pfunc_base.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c >> b/arch/powerpc/platforms/powermac/pfunc_base.c >> index 9c2947a3edd5..085e0ad20eba 100644 >> --- a/arch/powerpc/platforms/powermac/pfunc_base.c >> +++ b/arch/powerpc/platforms/powermac/pfunc_base.c >> @@ -136,6 +136,8 @@ static void __init macio_gpio_init_one(struct >> macio_chip *macio) >> for_each_child_of_node(gparent, gp) >> pmf_do_functions(gp, NULL, 0, PMF_FLAGS_ON_INIT, NULL); >> >> + of_node_put(gparent); >> + >> /* Note: We do not at this point implement the "at sleep" or >> "at wake" >> * functions. I yet to find any for GPIOs anyway >> */
On Sat, 16 Jul 2022 15:31:11 +0800, Liang He wrote: > We should call of_node_put() for the reference 'gparent' escaped > out of the for_each_child_of_node() as it has increased the refcount. > > Applied to powerpc/next. [1/1] powerpc/powermac/pfunc_base: Fix refcount leak bug in macio_gpio_init_one() https://git.kernel.org/powerpc/c/11373c933db20f8b6fd2cad27712e683ac9785f0 cheers
diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c b/arch/powerpc/platforms/powermac/pfunc_base.c index 9c2947a3edd5..085e0ad20eba 100644 --- a/arch/powerpc/platforms/powermac/pfunc_base.c +++ b/arch/powerpc/platforms/powermac/pfunc_base.c @@ -136,6 +136,8 @@ static void __init macio_gpio_init_one(struct macio_chip *macio) for_each_child_of_node(gparent, gp) pmf_do_functions(gp, NULL, 0, PMF_FLAGS_ON_INIT, NULL); + of_node_put(gparent); + /* Note: We do not at this point implement the "at sleep" or "at wake" * functions. I yet to find any for GPIOs anyway */
We should call of_node_put() for the reference 'gparent' escaped out of the for_each_child_of_node() as it has increased the refcount. Fixes: 5b9ca526917b ("[PATCH] 3/5 powerpc: Add platform functions interpreter") Signed-off-by: Liang He <windhl@126.com> --- arch/powerpc/platforms/powermac/pfunc_base.c | 2 ++ 1 file changed, 2 insertions(+)