diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2015-05-24 22:37:03 +0200 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2015-05-27 18:34:05 -0500 |
commit | ef07991a95de76b07594448c3521361831ec2cfe (patch) | |
tree | 028f4d52668d97e3ca04322e004c7a71b154c33f /drivers/pci | |
parent | 18c4342aa56d70176eea85021e6fe8f6f8f39c7b (diff) | |
download | linux-ef07991a95de76b07594448c3521361831ec2cfe.tar.bz2 |
PCI: iproc: Free resource list after registration
The resource list is only used in the setup process and was never freed.
pci_add_resource() allocates a memory area to store the list item.
Fix the memory leak.
Tested-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/host/pcie-iproc-bcma.c | 8 | ||||
-rw-r--r-- | drivers/pci/host/pcie-iproc-platform.c | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/pci/host/pcie-iproc-bcma.c b/drivers/pci/host/pcie-iproc-bcma.c index 7a412a145b51..96a7d999fd5e 100644 --- a/drivers/pci/host/pcie-iproc-bcma.c +++ b/drivers/pci/host/pcie-iproc-bcma.c @@ -65,12 +65,12 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev) pcie->map_irq = iproc_pcie_bcma_map_irq; ret = iproc_pcie_setup(pcie, &res); - if (ret) { + if (ret) dev_err(pcie->dev, "PCIe controller setup failed\n"); - return ret; - } - return 0; + pci_free_resource_list(&res); + + return ret; } static void iproc_pcie_bcma_remove(struct bcma_device *bdev) diff --git a/drivers/pci/host/pcie-iproc-platform.c b/drivers/pci/host/pcie-iproc-platform.c index c5fe4c160972..9aedc8eb2c6e 100644 --- a/drivers/pci/host/pcie-iproc-platform.c +++ b/drivers/pci/host/pcie-iproc-platform.c @@ -72,12 +72,12 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev) pcie->map_irq = of_irq_parse_and_map_pci; ret = iproc_pcie_setup(pcie, &res); - if (ret) { + if (ret) dev_err(pcie->dev, "PCIe controller setup failed\n"); - return ret; - } - return 0; + pci_free_resource_list(&res); + + return ret; } static int iproc_pcie_pltfm_remove(struct platform_device *pdev) |