diff mbox series

powerpc/powermac/pfunc_base: Fix refcount leak bug in macio_gpio_init_one()

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

Checks

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.

Commit Message

Liang He July 16, 2022, 7:31 a.m. UTC
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(+)

Comments

Benjamin Herrenschmidt Aug. 2, 2022, 4:51 a.m. UTC | #1
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
>  	 */
Liang He Aug. 13, 2022, 7:36 a.m. UTC | #2
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
>>  	 */
Michael Ellerman Sept. 9, 2022, 12:07 p.m. UTC | #3
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 mbox series

Patch

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
 	 */