2022-06-06 05:05:56

by Miaoqian Lin

[permalink] [raw]
Subject: [PATCH] sparc32,leon: Fix reference leak in leon_ipi_init

of_find_node_by_path() returns a node pointer with
refcount incremented, we should use of_node_put() on it when done.
Add missing of_node_put() to avoid refcount leak.

Fixes: 1ca0c808c60f ("sparc32,leon: Implemented SMP IPIs for LEON CPU")
Signed-off-by: Miaoqian Lin <[email protected]>
---
arch/sparc/kernel/leon_smp.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index 1eed26d423fb..85b22669c002 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -284,6 +284,7 @@ static void __init leon_ipi_init(void)
pp = of_find_property(rootnp, "ipi_num", &len);
if (pp && (*(int *)pp->value))
leon_ipi_irq = *(int *)pp->value;
+ of_node_put(rootnp);
}
printk(KERN_INFO "leon: SMP IPIs at IRQ %d\n", leon_ipi_irq);

--
2.25.1


2022-06-06 05:07:19

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH] sparc32,leon: Fix reference leak in leon_ipi_init

On Sun, Jun 05, 2022 at 09:29:41AM +0400, Miaoqian Lin wrote:
> of_find_node_by_path() returns a node pointer with
> refcount incremented, we should use of_node_put() on it when done.
> Add missing of_node_put() to avoid refcount leak.
>
> Fixes: 1ca0c808c60f ("sparc32,leon: Implemented SMP IPIs for LEON CPU")
> Signed-off-by: Miaoqian Lin <[email protected]>

The patch is finei, thanks:
Acked-by: Sam Ravnborg <[email protected]>

All other uses of of_find_node_by_path() in sparc has the same issue.
Could you try to take a look at the rest too?

Sam
> ---
> arch/sparc/kernel/leon_smp.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
> index 1eed26d423fb..85b22669c002 100644
> --- a/arch/sparc/kernel/leon_smp.c
> +++ b/arch/sparc/kernel/leon_smp.c
> @@ -284,6 +284,7 @@ static void __init leon_ipi_init(void)
> pp = of_find_property(rootnp, "ipi_num", &len);
> if (pp && (*(int *)pp->value))
> leon_ipi_irq = *(int *)pp->value;
> + of_node_put(rootnp);
> }
> printk(KERN_INFO "leon: SMP IPIs at IRQ %d\n", leon_ipi_irq);
>
> --
> 2.25.1