2022-04-28 17:34:57

by Peng Wu

[permalink] [raw]
Subject: [PATCH] ARM: hisi: Add missing of_node_put after of_find_compatible_node

of_find_compatible_node will increment the refcount of the returned
device_node. Calling of_node_put() to avoid the refcount leak

Signed-off-by: Peng Wu <[email protected]>
---
arch/arm/mach-hisi/platsmp.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
index a56cc64deeb8..9ce93e0b6cdc 100644
--- a/arch/arm/mach-hisi/platsmp.c
+++ b/arch/arm/mach-hisi/platsmp.c
@@ -67,14 +67,17 @@ static void __init hi3xxx_smp_prepare_cpus(unsigned int max_cpus)
}
ctrl_base = of_iomap(np, 0);
if (!ctrl_base) {
+ of_node_put(np);
pr_err("failed to map address\n");
return;
}
if (of_property_read_u32(np, "smp-offset", &offset) < 0) {
+ of_node_put(np);
pr_err("failed to find smp-offset property\n");
return;
}
ctrl_base += offset;
+ of_node_put(np);
}
}

@@ -160,6 +163,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
if (WARN_ON(!node))
return -1;
ctrl_base = of_iomap(node, 0);
+ of_node_put(node);

/* set the secondary core boot from DDR */
remap_reg_value = readl_relaxed(ctrl_base + REG_SC_CTRL);
--
2.17.1


2022-05-09 09:24:21

by Wei Xu

[permalink] [raw]
Subject: Re: [PATCH] ARM: hisi: Add missing of_node_put after of_find_compatible_node

Hi Peng,

On 2022/4/28 18:43, Peng Wu wrote:
> of_find_compatible_node will increment the refcount of the returned
> device_node. Calling of_node_put() to avoid the refcount leak
>
> Signed-off-by: Peng Wu <[email protected]>

Thanks!
Applied to the hisilicon armv7 SoC tree.

Best Regards,
Wei

> ---
> arch/arm/mach-hisi/platsmp.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
> index a56cc64deeb8..9ce93e0b6cdc 100644
> --- a/arch/arm/mach-hisi/platsmp.c
> +++ b/arch/arm/mach-hisi/platsmp.c
> @@ -67,14 +67,17 @@ static void __init hi3xxx_smp_prepare_cpus(unsigned int max_cpus)
> }
> ctrl_base = of_iomap(np, 0);
> if (!ctrl_base) {
> + of_node_put(np);
> pr_err("failed to map address\n");
> return;
> }
> if (of_property_read_u32(np, "smp-offset", &offset) < 0) {
> + of_node_put(np);
> pr_err("failed to find smp-offset property\n");
> return;
> }
> ctrl_base += offset;
> + of_node_put(np);
> }
> }
>
> @@ -160,6 +163,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
> if (WARN_ON(!node))
> return -1;
> ctrl_base = of_iomap(node, 0);
> + of_node_put(node);
>
> /* set the secondary core boot from DDR */
> remap_reg_value = readl_relaxed(ctrl_base + REG_SC_CTRL);
>