From: "Liang He" <windhl@126.com>
To: "Michael Ellerman" <mpe@ellerman.id.au>
Cc: nixiaoming@huawei.com, linux-kernel@vger.kernel.org,
oss@buserror.net, paulus@samba.org,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
linuxppc-dev@lists.ozlabs.org
Subject: Re:Re: [PATCH v2] arch: powerpc: platforms: 85xx: Add missing of_node_put in sgy_cts1000.c
Date: Fri, 17 Jun 2022 09:24:06 +0800 (CST) [thread overview]
Message-ID: <731903bf.f56.1816f42a0cb.Coremail.windhl@126.com> (raw)
In-Reply-To: <87o7ysb2ot.fsf@mpe.ellerman.id.au>
At 2022-06-17 07:37:06, "Michael Ellerman" <mpe@ellerman.id.au> wrote:
>Christophe JAILLET <christophe.jaillet@wanadoo.fr> writes:
>> Le 16/06/2022 à 17:19, Liang He a écrit :
>>> In gpio_halt_probe(), of_find_matching_node() will return a node pointer with
>>> refcount incremented. We should use of_node_put() in each fail path or when it
>>> is not used anymore.
>>>
>>> Signed-off-by: Liang He <windhl@126.com>
>>> ---
>>> changelog:
>>>
>>> v2: use goto-label patch style advised by Christophe.
>>> v1: add of_node_put() before each exit.
>>>
>>> arch/powerpc/platforms/85xx/sgy_cts1000.c | 27 +++++++++++++++--------
>>> 1 file changed, 18 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/arch/powerpc/platforms/85xx/sgy_cts1000.c b/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> index 98ae64075193..e280f963d88c 100644
>>> --- a/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> +++ b/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> @@ -73,6 +73,7 @@ static int gpio_halt_probe(struct platform_device *pdev)
>...
>>> @@ -122,8 +127,12 @@ static int gpio_halt_probe(struct platform_device *pdev)
>>>
>>> printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d"
>>> " irq).\n", gpio, trigger, irq);
>>> + ret = 0;
>>>
>>> - return 0;
>>> +err_put:
>>> + of_node_put(halt_node);
>>> + halt_node = NULL;
>>
>> Hi,
>> so now we set 'halt_node' to NULL even in the normal case.
>> This is really spurious.
>>
>> Look at gpio_halt_cb(), but I think that this is just wrong and badly
>> breaks this driver.
>
>I agree, thanks for reviewing.
>
>I think the cleanest solution is to use a local variable for the node in
>the body of gpio_halt_probe(), and only assign to halt_node once all the
>checks have passed.
>
>So something like:
>
> struct device_node *child_node;
>
> child_node = of_find_matching_node(node, child_match);
> ...
>
> printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d"
> " irq).\n", gpio, trigger, irq);
> ret = 0;
> halt_node = of_node_get(child_node);
>
>out_put:
> of_node_put(child_node);
>
> return ret;
>}
>
>
>cheers
Thanks, Michael and Christophe.
I will send a patch based on your reviews.
Liang
WARNING: multiple messages have this Message-ID (diff)
From: "Liang He" <windhl@126.com>
To: "Michael Ellerman" <mpe@ellerman.id.au>
Cc: "Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
oss@buserror.net, paulus@samba.org, christophe.leroy@csgroup.eu,
nixiaoming@huawei.com, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re:Re: [PATCH v2] arch: powerpc: platforms: 85xx: Add missing of_node_put in sgy_cts1000.c
Date: Fri, 17 Jun 2022 09:24:06 +0800 (CST) [thread overview]
Message-ID: <731903bf.f56.1816f42a0cb.Coremail.windhl@126.com> (raw)
In-Reply-To: <87o7ysb2ot.fsf@mpe.ellerman.id.au>
At 2022-06-17 07:37:06, "Michael Ellerman" <mpe@ellerman.id.au> wrote:
>Christophe JAILLET <christophe.jaillet@wanadoo.fr> writes:
>> Le 16/06/2022 à 17:19, Liang He a écrit :
>>> In gpio_halt_probe(), of_find_matching_node() will return a node pointer with
>>> refcount incremented. We should use of_node_put() in each fail path or when it
>>> is not used anymore.
>>>
>>> Signed-off-by: Liang He <windhl@126.com>
>>> ---
>>> changelog:
>>>
>>> v2: use goto-label patch style advised by Christophe.
>>> v1: add of_node_put() before each exit.
>>>
>>> arch/powerpc/platforms/85xx/sgy_cts1000.c | 27 +++++++++++++++--------
>>> 1 file changed, 18 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/arch/powerpc/platforms/85xx/sgy_cts1000.c b/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> index 98ae64075193..e280f963d88c 100644
>>> --- a/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> +++ b/arch/powerpc/platforms/85xx/sgy_cts1000.c
>>> @@ -73,6 +73,7 @@ static int gpio_halt_probe(struct platform_device *pdev)
>...
>>> @@ -122,8 +127,12 @@ static int gpio_halt_probe(struct platform_device *pdev)
>>>
>>> printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d"
>>> " irq).\n", gpio, trigger, irq);
>>> + ret = 0;
>>>
>>> - return 0;
>>> +err_put:
>>> + of_node_put(halt_node);
>>> + halt_node = NULL;
>>
>> Hi,
>> so now we set 'halt_node' to NULL even in the normal case.
>> This is really spurious.
>>
>> Look at gpio_halt_cb(), but I think that this is just wrong and badly
>> breaks this driver.
>
>I agree, thanks for reviewing.
>
>I think the cleanest solution is to use a local variable for the node in
>the body of gpio_halt_probe(), and only assign to halt_node once all the
>checks have passed.
>
>So something like:
>
> struct device_node *child_node;
>
> child_node = of_find_matching_node(node, child_match);
> ...
>
> printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d"
> " irq).\n", gpio, trigger, irq);
> ret = 0;
> halt_node = of_node_get(child_node);
>
>out_put:
> of_node_put(child_node);
>
> return ret;
>}
>
>
>cheers
Thanks, Michael and Christophe.
I will send a patch based on your reviews.
Liang
next prev parent reply other threads:[~2022-06-17 1:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-16 15:19 [PATCH v2] arch: powerpc: platforms: 85xx: Add missing of_node_put in sgy_cts1000.c Liang He
2022-06-16 15:19 ` Liang He
2022-06-16 18:54 ` Christophe JAILLET
2022-06-16 23:37 ` Michael Ellerman
2022-06-17 1:24 ` Liang He [this message]
2022-06-17 1:24 ` Liang He
2022-06-17 2:25 ` Liang He
2022-06-17 2:25 ` Liang He
2022-06-17 4:29 ` Michael Ellerman
2022-06-17 4:29 ` Michael Ellerman
2022-06-17 5:13 ` Liang He
2022-06-17 5:13 ` Liang He
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=731903bf.f56.1816f42a0cb.Coremail.windhl@126.com \
--to=windhl@126.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=nixiaoming@huawei.com \
--cc=oss@buserror.net \
--cc=paulus@samba.org \
/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.