diff options
Diffstat (limited to 'drivers/pci/host/pci-versatile.c')
| -rw-r--r-- | drivers/pci/host/pci-versatile.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c index f234405770ab..b7dc07002f13 100644 --- a/drivers/pci/host/pci-versatile.c +++ b/drivers/pci/host/pci-versatile.c | |||
| @@ -74,7 +74,7 @@ static int versatile_pci_parse_request_of_pci_ranges(struct device *dev, | |||
| 74 | int err, mem = 1, res_valid = 0; | 74 | int err, mem = 1, res_valid = 0; |
| 75 | struct device_node *np = dev->of_node; | 75 | struct device_node *np = dev->of_node; |
| 76 | resource_size_t iobase; | 76 | resource_size_t iobase; |
| 77 | struct resource_entry *win; | 77 | struct resource_entry *win, *tmp; |
| 78 | 78 | ||
| 79 | err = of_pci_get_host_bridge_resources(np, 0, 0xff, res, &iobase); | 79 | err = of_pci_get_host_bridge_resources(np, 0, 0xff, res, &iobase); |
| 80 | if (err) | 80 | if (err) |
| @@ -84,15 +84,17 @@ static int versatile_pci_parse_request_of_pci_ranges(struct device *dev, | |||
| 84 | if (err) | 84 | if (err) |
| 85 | goto out_release_res; | 85 | goto out_release_res; |
| 86 | 86 | ||
| 87 | resource_list_for_each_entry(win, res) { | 87 | resource_list_for_each_entry_safe(win, tmp, res) { |
| 88 | struct resource *res = win->res; | 88 | struct resource *res = win->res; |
| 89 | 89 | ||
| 90 | switch (resource_type(res)) { | 90 | switch (resource_type(res)) { |
| 91 | case IORESOURCE_IO: | 91 | case IORESOURCE_IO: |
| 92 | err = pci_remap_iospace(res, iobase); | 92 | err = pci_remap_iospace(res, iobase); |
| 93 | if (err) | 93 | if (err) { |
| 94 | dev_warn(dev, "error %d: failed to map resource %pR\n", | 94 | dev_warn(dev, "error %d: failed to map resource %pR\n", |
| 95 | err, res); | 95 | err, res); |
| 96 | resource_list_destroy_entry(win); | ||
| 97 | } | ||
| 96 | break; | 98 | break; |
| 97 | case IORESOURCE_MEM: | 99 | case IORESOURCE_MEM: |
| 98 | res_valid |= !(res->flags & IORESOURCE_PREFETCH); | 100 | res_valid |= !(res->flags & IORESOURCE_PREFETCH); |
