PCI: Release OF node in pci_scan_device()'s error path
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Sun, 24 Jan 2021 23:28:26 +0000 (02:28 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 23 Mar 2021 15:18:49 +0000 (10:18 -0500)
In pci_scan_device(), if pci_setup_device() fails for any reason, the code
will not release device's of_node by calling pci_release_of_node().  Fix
that by calling the release function.

Fixes: 98d9f30c820d ("pci/of: Match PCI devices to OF nodes dynamically")
Link: https://lore.kernel.org/r/20210124232826.1879-1-dmitry.baryshkov@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
drivers/pci/probe.c

index 953f15abc850acafe75d8ca30d382902c600986e..be51670572fa67fe1a28d971f0ed9b8f66d2e1e0 100644 (file)
@@ -2353,6 +2353,7 @@ static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
        pci_set_of_node(dev);
 
        if (pci_setup_device(dev)) {
+               pci_release_of_node(dev);
                pci_bus_put(dev->bus);
                kfree(dev);
                return NULL;