[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87tuhcx6v6.fsf@linux.ibm.com>
Date: Wed, 20 Oct 2021 06:39:41 -0500
From: Nathan Lynch <nathanl@...ux.ibm.com>
To: Wan Jiabing <wanjiabing@...o.com>
Cc: kael_w@...h.net, Wan Jiabing <wanjiabing@...o.com>,
Michael Ellerman <mpe@...erman.id.au>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Bjorn Helgaas <bhelgaas@...gle.com>,
linuxppc-dev@...ts.ozlabs.org, linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org,
Tyrel Datwyler <tyreld@...ux.ibm.com>, ajd@...ux.ibm.com
Subject: Re: [PATCH] PCI/hotplug: Remove unneeded of_node_put() in pnv_php
Wan Jiabing <wanjiabing@...o.com> writes:
> Fix following coccicheck warning:
> ./drivers/pci/hotplug/pnv_php.c:161:2-13: ERROR: probable double put.
>
> Device node iterators put the previous value of the index variable, so
> an explicit put causes a double put.
I suppose Coccinelle doesn't take into account that this code is
detaching and freeing the nodes.
> diff --git a/drivers/pci/hotplug/pnv_php.c b/drivers/pci/hotplug/pnv_php.c
> index f4c2e6e01be0..f3da4f95d73f 100644
> --- a/drivers/pci/hotplug/pnv_php.c
> +++ b/drivers/pci/hotplug/pnv_php.c
> @@ -158,7 +158,6 @@ static void pnv_php_detach_device_nodes(struct device_node *parent)
> for_each_child_of_node(parent, dn) {
> pnv_php_detach_device_nodes(dn);
>
> - of_node_put(dn);
> of_detach_node(dn);
> }
The code might be improved by comments explaining how the bare
of_node_put() corresponds to a "get" somewhere else in the driver, and
how it doesn't render the ongoing traversal unsafe. It looks suspicious
on first review, but I believe it's intentional and probably correct as
written.
Powered by blists - more mailing lists