Re: [PATCH v2] PCI: kirin: Fix of_node_put() issue in pcie-kirin

From: Bjorn Helgaas
Date: Fri Nov 05 2021 - 14:59:59 EST


On Thu, Nov 04, 2021 at 10:07:11PM -0400, Wan Jiabing wrote:
> Fix following coccicheck warning:
> ./drivers/pci/controller/dwc/pcie-kirin.c:414:2-34: WARNING: Function
> for_each_available_child_of_node should have of_node_put() before return.
>
> Early exits from for_each_available_child_of_node should decrement the
> node reference counter. Replace return by goto here and add a missing
> of_node_put for parent.
>
> Signed-off-by: Wan Jiabing <wanjiabing@xxxxxxxx>

I had already squashed this into:

https://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/commit/?id=b22dbbb24571

> ---
> drivers/pci/controller/dwc/pcie-kirin.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
> index 06017e826832..b72a12bac49d 100644
> --- a/drivers/pci/controller/dwc/pcie-kirin.c
> +++ b/drivers/pci/controller/dwc/pcie-kirin.c
> @@ -422,7 +422,8 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
> pcie->num_slots++;
> if (pcie->num_slots > MAX_PCI_SLOTS) {
> dev_err(dev, "Too many PCI slots!\n");
> - return -EINVAL;
> + ret = -EINVAL;
> + goto put_node;
> }
>
> ret = of_pci_get_devfn(child);
> @@ -446,6 +447,7 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
> return 0;
>
> put_node:
> + of_node_put(parent);
> of_node_put(child);
> return ret;
> }
> --
> 2.20.1
>