aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/host/pci-aardvark.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
index ef9893fa3176..4f5e567fd7e0 100644
--- a/drivers/pci/host/pci-aardvark.c
+++ b/drivers/pci/host/pci-aardvark.c
@@ -848,7 +848,7 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
848 int err, res_valid = 0; 848 int err, res_valid = 0;
849 struct device *dev = &pcie->pdev->dev; 849 struct device *dev = &pcie->pdev->dev;
850 struct device_node *np = dev->of_node; 850 struct device_node *np = dev->of_node;
851 struct resource_entry *win; 851 struct resource_entry *win, *tmp;
852 resource_size_t iobase; 852 resource_size_t iobase;
853 853
854 INIT_LIST_HEAD(&pcie->resources); 854 INIT_LIST_HEAD(&pcie->resources);
@@ -862,7 +862,7 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
862 if (err) 862 if (err)
863 goto out_release_res; 863 goto out_release_res;
864 864
865 resource_list_for_each_entry(win, &pcie->resources) { 865 resource_list_for_each_entry_safe(win, tmp, &pcie->resources) {
866 struct resource *res = win->res; 866 struct resource *res = win->res;
867 867
868 switch (resource_type(res)) { 868 switch (resource_type(res)) {
@@ -874,9 +874,11 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
874 lower_32_bits(res->start), 874 lower_32_bits(res->start),
875 OB_PCIE_IO); 875 OB_PCIE_IO);
876 err = pci_remap_iospace(res, iobase); 876 err = pci_remap_iospace(res, iobase);
877 if (err) 877 if (err) {
878 dev_warn(dev, "error %d: failed to map resource %pR\n", 878 dev_warn(dev, "error %d: failed to map resource %pR\n",
879 err, res); 879 err, res);
880 resource_list_destroy_entry(win);
881 }
880 break; 882 break;
881 case IORESOURCE_MEM: 883 case IORESOURCE_MEM:
882 advk_pcie_set_ob_win(pcie, 0, 884 advk_pcie_set_ob_win(pcie, 0,