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
>
>
>
next prev parent 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.