summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorJeffy Chen2017-08-23 09:03:39 +0200
committerBjorn Helgaas2017-08-29 20:18:08 +0200
commitcecaf5cdfcf14f83ac8f311f3822dccbcf6589e4 (patch)
treee40685256222cdcd95c38267575082af1aea9dbb /drivers/pci
parentPCI: rockchip: Remove IRQ domain if probe fails (diff)
downloadkernel-qcow2-linux-cecaf5cdfcf14f83ac8f311f3822dccbcf6589e4.tar.gz
kernel-qcow2-linux-cecaf5cdfcf14f83ac8f311f3822dccbcf6589e4.tar.xz
kernel-qcow2-linux-cecaf5cdfcf14f83ac8f311f3822dccbcf6589e4.zip
PCI: rockchip: Umap IO space if probe fails
Call pci_unmap_iospace() to clean up if probe fails. Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/host/pcie-rockchip.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c
index f8763f0017d5..56c2423ea021 100644
--- a/drivers/pci/host/pcie-rockchip.c
+++ b/drivers/pci/host/pcie-rockchip.c
@@ -1605,12 +1605,12 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
err = rockchip_pcie_cfg_atu(rockchip);
if (err)
- goto err_free_res;
+ goto err_unmap_iospace;
rockchip->msg_region = devm_ioremap(dev, rockchip->msg_bus_addr, SZ_1M);
if (!rockchip->msg_region) {
err = -ENOMEM;
- goto err_free_res;
+ goto err_unmap_iospace;
}
list_splice_init(&res, &bridge->windows);
@@ -1623,7 +1623,7 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
err = pci_scan_root_bus_bridge(bridge);
if (err < 0)
- goto err_free_res;
+ goto err_unmap_iospace;
bus = bridge->bus;
@@ -1637,6 +1637,8 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
pci_bus_add_devices(bus);
return 0;
+err_unmap_iospace:
+ pci_unmap_iospace(rockchip->io);
err_free_res:
pci_free_resource_list(&res);
err_remove_irq_domain: