summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorJeffy Chen <jeffy.chen@rock-chips.com>2017-08-23 15:03:39 +0800
committerBjorn Helgaas <bhelgaas@google.com>2017-08-29 13:18:08 -0500
commitcecaf5cdfcf14f83ac8f311f3822dccbcf6589e4 (patch)
treee40685256222cdcd95c38267575082af1aea9dbb /drivers/pci
parent7b15b85927d6b04d0d8f1caf217bc6312486fdd5 (diff)
downloadop-kernel-dev-cecaf5cdfcf14f83ac8f311f3822dccbcf6589e4.zip
op-kernel-dev-cecaf5cdfcf14f83ac8f311f3822dccbcf6589e4.tar.gz
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 f8763f0..56c2423 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:
OpenPOWER on IntegriCloud