diff mbox series

[v2,14/15] arm64: cpu_ops: fix a leaked reference by adding missing of_node_put

Message ID 1551785646-46173-14-git-send-email-wen.yang99@zte.com.cn (mailing list archive)
State New, archived
Headers show
Series [v2,01/15] ARM: actions: fix a leaked reference by adding missing of_node_put | expand

Commit Message

Wen Yang March 5, 2019, 11:34 a.m. UTC
The call to of_get_next_child returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.

Detected by coccinelle with the following warnings:
./arch/arm64/kernel/cpu_ops.c:102:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 69, but without a corresponding object release within this function.

Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
v2->v1: add a missing space between "adding" and "missing"

 arch/arm64/kernel/cpu_ops.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Will Deacon April 1, 2019, 3:37 p.m. UTC | #1
On Tue, Mar 05, 2019 at 07:34:05PM +0800, Wen Yang wrote:
> The call to of_get_next_child returns a node pointer with refcount
> incremented thus it must be explicitly decremented after the last
> usage.
> 
> Detected by coccinelle with the following warnings:
> ./arch/arm64/kernel/cpu_ops.c:102:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 69, but without a corresponding object release within this function.
> 
> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> ---
> v2->v1: add a missing space between "adding" and "missing"
> 
>  arch/arm64/kernel/cpu_ops.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm64/kernel/cpu_ops.c b/arch/arm64/kernel/cpu_ops.c
> index ea00124..00f8b86 100644
> --- a/arch/arm64/kernel/cpu_ops.c
> +++ b/arch/arm64/kernel/cpu_ops.c
> @@ -85,6 +85,7 @@ static const char *__init cpu_read_enable_method(int cpu)
>  				pr_err("%pOF: missing enable-method property\n",
>  					dn);
>  		}
> +		of_node_put(dn);
>  	} else {
>  		enable_method = acpi_get_enable_method(cpu);
>  		if (!enable_method) {

Looks about right to me:

Acked-by: Will Deacon <will.deacon@arm.com>

How do you plan to get this upstream? Can we just pick this one up via
arm64?

Will
Will Deacon April 3, 2019, 12:44 p.m. UTC | #2
On Wed, Apr 03, 2019 at 01:56:09PM +0800, wen.yang99@zte.com.cn wrote:
> > > The call to of_get_next_child returns a node pointer with refcount
> > > incremented thus it must be explicitly decremented after the last
> > > usage.
> > >
> > > Detected by coccinelle with the following warnings:
> > > ./arch/arm64/kernel/cpu_ops.c:102:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 69, but without a corresponding object release within this function.
> > >
> > > Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> > > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> > > Cc: Catalin Marinas <catalin.marinas@arm.com>
> > > Cc: Will Deacon <will.deacon@arm.com>
> > > Cc: linux-arm-kernel@lists.infradead.org
> > > Cc: linux-kernel@vger.kernel.org
> > > ---
> > > v2->v1: add a missing space between "adding" and "missing"
> > >
> > >  arch/arm64/kernel/cpu_ops.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/arch/arm64/kernel/cpu_ops.c b/arch/arm64/kernel/cpu_ops.c
> > > index ea00124..00f8b86 100644
> > > --- a/arch/arm64/kernel/cpu_ops.c
> > > +++ b/arch/arm64/kernel/cpu_ops.c
> > > @@ -85,6 +85,7 @@ static const char *__init cpu_read_enable_method(int cpu)
> > >                  pr_err("%pOF: missing enable-method property\n",
> > >                      dn);
> > >          }
> > > +        of_node_put(dn);
> > >      } else {
> > >          enable_method = acpi_get_enable_method(cpu);
> > >          if (!enable_method) {
> > 
> > Looks about right to me:
> > 
> > Acked-by: Will Deacon <will.deacon@arm.com>
> > 
> > How do you plan to get this upstream? Can we just pick this one up via
> > arm64?
> 
> Ok, thank you.
> We are very happy to know that it is useful.

Ok, I picked it up.

Will
diff mbox series

Patch

diff --git a/arch/arm64/kernel/cpu_ops.c b/arch/arm64/kernel/cpu_ops.c
index ea00124..00f8b86 100644
--- a/arch/arm64/kernel/cpu_ops.c
+++ b/arch/arm64/kernel/cpu_ops.c
@@ -85,6 +85,7 @@  static const char *__init cpu_read_enable_method(int cpu)
 				pr_err("%pOF: missing enable-method property\n",
 					dn);
 		}
+		of_node_put(dn);
 	} else {
 		enable_method = acpi_get_enable_method(cpu);
 		if (!enable_method) {