From: "Liang He" <windhl@126.com>
To: "Tyrel Datwyler" <tyreld@linux.ibm.com>
Cc: linmq006@gmail.com, paulus@samba.org, linuxppc-dev@lists.ozlabs.org
Subject: Re:Re: [PATCH] powerpc: kernel: pci_dn: Add missing of_node_put() for of_get_xx API
Date: Sat, 2 Jul 2022 05:36:50 +0800 (CST) [thread overview]
Message-ID: <45bdd1ef.cf.181bbb1f1e9.Coremail.windhl@126.com> (raw)
In-Reply-To: <09bcb7d7-5c27-04cc-6796-cbeb3d0abb14@linux.ibm.com>
At 2022-07-02 03:47:22, "Tyrel Datwyler" <tyreld@linux.ibm.com> wrote:
>On 7/1/22 06:17, Liang He wrote:
>> In pci_add_device_node_info(), we should use of_node_put() for the
>> reference 'parent' returned by of_get_parent() to keep refcount
>> balance.
>>
>> Fixes: cca87d303c85 ("powerpc/pci: Refactor pci_dn")
>> Co-authored-by: Miaoqian Lin <linmq006@gmail.com>
>> Signed-off-by: Liang He <windhl@126.com>
>> ---
>> arch/powerpc/kernel/pci_dn.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c
>> index 938ab8838ab5..aa221958007e 100644
>> --- a/arch/powerpc/kernel/pci_dn.c
>> +++ b/arch/powerpc/kernel/pci_dn.c
>> @@ -330,6 +330,7 @@ struct pci_dn *pci_add_device_node_info(struct pci_controller *hose,
>> INIT_LIST_HEAD(&pdn->list);
>> parent = of_get_parent(dn);
>> pdn->parent = parent ? PCI_DN(parent) : NULL;
>NACK
>
>pdn->parent is now a long term reference so we should not do a put on parent
>until we pdn->parent is no longer valid.
>
>-Tyrel
Hi, Tyrel
Thanks for reviewing this code.
But I think there is some confusion about the of_get_parent() and I can confirm
my point when I check the 'pci_remove_device_node_info' function, which may be
a second bug.
In pci_remove_device_node_info(), I notice the comment, 'Drop the parent pci_dn's ref ...'.
However, of_get_parent() will increase the refcount of the parent, and then the
following of_node_put() will decrease the refcount, so, finally, there is no any change.
Back to this case, as the 'pdn->parent' is not the reference of parent device_node, it is
device_node's data, so I think it is better to keep the original meaning of refcounting, i.e,
add a of_node_put() to keep the refcount balance.
If I have some mis-understanding, please correct me.
Thanks,
Liang
>
>> + of_node_put(parent);
>> if (pdn->parent)
>> list_add_tail(&pdn->list, &pdn->parent->child_list);
>>
next prev parent reply other threads:[~2022-07-01 21:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-01 13:17 [PATCH] powerpc: kernel: pci_dn: Add missing of_node_put() for of_get_xx API Liang He
2022-07-01 19:47 ` Tyrel Datwyler
2022-07-01 21:36 ` Liang He [this message]
2022-07-01 22:18 ` Tyrel Datwyler
2022-09-09 12:07 ` Michael Ellerman
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=45bdd1ef.cf.181bbb1f1e9.Coremail.windhl@126.com \
--to=windhl@126.com \
--cc=linmq006@gmail.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
--cc=tyreld@linux.ibm.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.