PCI: Fix minimum allocation address overwrite
Commit 36e097a8a297 ("PCI: Split out bridge window override of minimum allocation address") claimed to do no functional changes but unfortunately did: The "min" variable is altered. At least the AVM A1 PCMCIA adapter was no longer detected, breaking ISDN operation. Use a local copy of "min" to restore the previous behaviour. [bhelgaas: avoid gcc "?:" extension for portability and readability] Fixes: 36e097a8a297 ("PCI: Split out bridge window override of minimum allocation address") Signed-off-by: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> CC: stable@vger.kernel.org # v3.14+
This commit is contained in:
parent
1ec218373b
commit
3460baa620
@ -140,6 +140,8 @@ static int pci_bus_alloc_from_region(struct pci_bus *bus, struct resource *res,
|
|||||||
type_mask |= IORESOURCE_TYPE_BITS;
|
type_mask |= IORESOURCE_TYPE_BITS;
|
||||||
|
|
||||||
pci_bus_for_each_resource(bus, r, i) {
|
pci_bus_for_each_resource(bus, r, i) {
|
||||||
|
resource_size_t min_used = min;
|
||||||
|
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -163,12 +165,12 @@ static int pci_bus_alloc_from_region(struct pci_bus *bus, struct resource *res,
|
|||||||
* overrides "min".
|
* overrides "min".
|
||||||
*/
|
*/
|
||||||
if (avail.start)
|
if (avail.start)
|
||||||
min = avail.start;
|
min_used = avail.start;
|
||||||
|
|
||||||
max = avail.end;
|
max = avail.end;
|
||||||
|
|
||||||
/* Ok, try it out.. */
|
/* Ok, try it out.. */
|
||||||
ret = allocate_resource(r, res, size, min, max,
|
ret = allocate_resource(r, res, size, min_used, max,
|
||||||
align, alignf, alignf_data);
|
align, alignf, alignf_data);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user