Patchwork of: remove the unnecessary of_node_put for of_parse_phandle_with_args()

login
register
mail settings
Submitter tang yuantian
Date April 9, 2013, 6:56 a.m.
Message ID <1365490569-32455-1-git-send-email-Yuantian.Tang@freescale.com>
Download mbox | patch
Permalink /patch/234976/
State Superseded
Delegated to: Grant Likely
Headers show

Comments

tang yuantian - April 9, 2013, 6:56 a.m.
From: Tang Yuantian <yuantian.tang@freescale.com>

As the function itself says it is caller's responsibility to call the
of_node_put().  So, remove it on success to keep the reference count
correct.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
---
 drivers/of/base.c | 3 ---
 1 file changed, 3 deletions(-)
Stephen Rothwell - April 10, 2013, 9:03 a.m.
Hi,

On Tue, 9 Apr 2013 14:56:09 +0800 <Yuantian.Tang@freescale.com> wrote:
>
> From: Tang Yuantian <yuantian.tang@freescale.com>
> 
> As the function itself says it is caller's responsibility to call the
> of_node_put().  So, remove it on success to keep the reference count
> correct.
> 
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> ---
>  drivers/of/base.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 321d3ef..e8b4c28 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -1168,9 +1168,6 @@ static int __of_parse_phandle_with_args(const struct device_node *np,
>  					out_args->args[i] = be32_to_cpup(list++);
>  			}
>  
> -			/* Found it! return success */
> -			if (node)
> -				of_node_put(node);

Actually, if out_args is NULL, you should do the of_node_put(node), so
probably the correct fix is to add an "else" before the above "if" (and
move the comment).
tang yuantian - April 10, 2013, 9:06 a.m.
> -----Original Message-----

> From: Stephen Rothwell [mailto:sfr@canb.auug.org.au]

> Sent: 2013年4月10日 17:03

> To: Tang Yuantian-B29983

> Cc: grant.likely@secretlab.ca; devicetree-discuss@lists.ozlabs.org;

> linuxppc-dev@lists.ozlabs.org; linux-kernel@vger.kernel.org;

> rob.herring@calxeda.com

> Subject: Re: [PATCH] of: remove the unnecessary of_node_put for

> of_parse_phandle_with_args()

> 

> Hi,

> 

> On Tue, 9 Apr 2013 14:56:09 +0800 <Yuantian.Tang@freescale.com> wrote:

> >

> > From: Tang Yuantian <yuantian.tang@freescale.com>

> >

> > As the function itself says it is caller's responsibility to call the

> > of_node_put().  So, remove it on success to keep the reference count

> > correct.

> >

> > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>

> > ---

> >  drivers/of/base.c | 3 ---

> >  1 file changed, 3 deletions(-)

> >

> > diff --git a/drivers/of/base.c b/drivers/of/base.c index

> > 321d3ef..e8b4c28 100644

> > --- a/drivers/of/base.c

> > +++ b/drivers/of/base.c

> > @@ -1168,9 +1168,6 @@ static int __of_parse_phandle_with_args(const

> struct device_node *np,

> >  					out_args->args[i] = be32_to_cpup(list++);

> >  			}

> >

> > -			/* Found it! return success */

> > -			if (node)

> > -				of_node_put(node);

> 

> Actually, if out_args is NULL, you should do the of_node_put(node), so

> probably the correct fix is to add an "else" before the above "if" (and

> move the comment).

> 


Yes, I already sent out the v2 patch.
Please see: http://patchwork.ozlabs.org/patch/235288/

Regards,
Yuantian

> --

> Cheers,

> Stephen Rothwell                    sfr@canb.auug.org.au

> http://www.canb.auug.org.au/~sfr/
Stephen Rothwell - April 10, 2013, 11:09 a.m.
Hi,

On Wed, 10 Apr 2013 09:06:11 +0000 Tang Yuantian-B29983 <B29983@freescale.com> wrote:
>
> Yes, I already sent out the v2 patch.
> Please see: http://patchwork.ozlabs.org/patch/235288/

Thanks.  I should read all my email before replying to it :-)

Patch

diff --git a/drivers/of/base.c b/drivers/of/base.c
index 321d3ef..e8b4c28 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1168,9 +1168,6 @@  static int __of_parse_phandle_with_args(const struct device_node *np,
 					out_args->args[i] = be32_to_cpup(list++);
 			}
 
-			/* Found it! return success */
-			if (node)
-				of_node_put(node);
 			return 0;
 		}