All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srinivas KANDAGATLA <srinivas.kandagatla@st.com>
To: Michael Ellerman <michael@ellerman.id.au>
Cc: devicetree-discuss@lists.ozlabs.org, robherring2@gmail.com,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2 3/7] dt/powerpc/powernv: Use of_get_child_by_name to get a named child.
Date: Mon, 17 Sep 2012 08:31:50 +0100	[thread overview]
Message-ID: <5056D1E6.2010804@st.com> (raw)
In-Reply-To: <1347847668.28674.3.camel@concordia>

On 17/09/12 03:07, Michael Ellerman wrote:
> On Fri, 2012-09-14 at 09:19 +0100, Srinivas KANDAGATLA wrote:
>> From: Srinivas Kandagatla <srinivas.kandagatla@st.com>
>>
>> As follow-up to "dt: introduce of_get_child_by_name to get child node by
>> name." patch, This patch removes some of the code duplication in the
>> driver by replacing it with of_get_child_by_name instead.
>>
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
>> ---
>>  arch/powerpc/platforms/powernv/opal.c |    6 ++----
>>  1 files changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
>> index aaa0dba..6dfb8af 100644
>> --- a/arch/powerpc/platforms/powernv/opal.c
>> +++ b/arch/powerpc/platforms/powernv/opal.c
>> @@ -294,11 +294,9 @@ static int __init opal_init(void)
>>  		consoles = of_node_get(opal_node);
>>  
>>  	/* Register serial ports */
>> -	for_each_child_of_node(consoles, np) {
>> -		if (strcmp(np->name, "serial"))
>> -			continue;
>> +	np = of_get_child_by_name(consoles, "serial");
>> +	if (np)
>>  		of_platform_device_create(np, NULL, NULL);
>> -	}
>>  	of_node_put(consoles);
> You've introduced a refcounting bug here.
>
> The return value of of_get_child_by_name() has its refcount elevated
> (via of_node_get()), so you have to drop that reference with
> of_node_put().
I agree..
Will take care of it in v3 patch-series.
> The old code was safe because it only used np inside the loop, and the
> loop logic deals with dropping the refcount for you.
>
> And yes of_platform_device_create() takes a reference for itself.
>
> cheers
>
>
>

WARNING: multiple messages have this Message-ID (diff)
From: Srinivas KANDAGATLA <srinivas.kandagatla-qxv4g6HH51o@public.gmane.org>
To: Michael Ellerman <michael-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Subject: Re: [PATCH v2 3/7] dt/powerpc/powernv: Use of_get_child_by_name to get a named child.
Date: Mon, 17 Sep 2012 08:31:50 +0100	[thread overview]
Message-ID: <5056D1E6.2010804@st.com> (raw)
In-Reply-To: <1347847668.28674.3.camel@concordia>

On 17/09/12 03:07, Michael Ellerman wrote:
> On Fri, 2012-09-14 at 09:19 +0100, Srinivas KANDAGATLA wrote:
>> From: Srinivas Kandagatla <srinivas.kandagatla-qxv4g6HH51o@public.gmane.org>
>>
>> As follow-up to "dt: introduce of_get_child_by_name to get child node by
>> name." patch, This patch removes some of the code duplication in the
>> driver by replacing it with of_get_child_by_name instead.
>>
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla-qxv4g6HH51o@public.gmane.org>
>> ---
>>  arch/powerpc/platforms/powernv/opal.c |    6 ++----
>>  1 files changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
>> index aaa0dba..6dfb8af 100644
>> --- a/arch/powerpc/platforms/powernv/opal.c
>> +++ b/arch/powerpc/platforms/powernv/opal.c
>> @@ -294,11 +294,9 @@ static int __init opal_init(void)
>>  		consoles = of_node_get(opal_node);
>>  
>>  	/* Register serial ports */
>> -	for_each_child_of_node(consoles, np) {
>> -		if (strcmp(np->name, "serial"))
>> -			continue;
>> +	np = of_get_child_by_name(consoles, "serial");
>> +	if (np)
>>  		of_platform_device_create(np, NULL, NULL);
>> -	}
>>  	of_node_put(consoles);
> You've introduced a refcounting bug here.
>
> The return value of of_get_child_by_name() has its refcount elevated
> (via of_node_get()), so you have to drop that reference with
> of_node_put().
I agree..
Will take care of it in v3 patch-series.
> The old code was safe because it only used np inside the loop, and the
> loop logic deals with dropping the refcount for you.
>
> And yes of_platform_device_create() takes a reference for itself.
>
> cheers
>
>
>

  reply	other threads:[~2012-09-17  7:31 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-14  8:19 [PATCH v2 3/7] dt/powerpc/powernv: Use of_get_child_by_name to get a named child Srinivas KANDAGATLA
2012-09-14  8:19 ` Srinivas KANDAGATLA
2012-09-17  2:07 ` Michael Ellerman
2012-09-17  2:07   ` Michael Ellerman
2012-09-17  7:31   ` Srinivas KANDAGATLA [this message]
2012-09-17  7:31     ` Srinivas KANDAGATLA

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5056D1E6.2010804@st.com \
    --to=srinivas.kandagatla@st.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=michael@ellerman.id.au \
    --cc=robherring2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.