Commit 49c93e84 authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds

[PATCH] i386/x86-64: Return defined error value for bad PCI config space accesses

Mostly to get better handling when a extended config space
access has to fallback to Type1.

Cc: gregkh@suse.de
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 8c30b1a7
...@@ -19,8 +19,10 @@ int pci_conf1_read(unsigned int seg, unsigned int bus, ...@@ -19,8 +19,10 @@ int pci_conf1_read(unsigned int seg, unsigned int bus,
{ {
unsigned long flags; unsigned long flags;
if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) {
*value = -1;
return -EINVAL; return -EINVAL;
}
spin_lock_irqsave(&pci_config_lock, flags); spin_lock_irqsave(&pci_config_lock, flags);
......
...@@ -80,8 +80,10 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus, ...@@ -80,8 +80,10 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
unsigned long flags; unsigned long flags;
u32 base; u32 base;
if (!value || (bus > 255) || (devfn > 255) || (reg > 4095)) if (!value || (bus > 255) || (devfn > 255) || (reg > 4095)) {
*value = -1;
return -EINVAL; return -EINVAL;
}
base = get_base_addr(seg, bus, devfn); base = get_base_addr(seg, bus, devfn);
if (!base) if (!base)
......
...@@ -75,8 +75,10 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus, ...@@ -75,8 +75,10 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
char __iomem *addr; char __iomem *addr;
/* Why do we have this when nobody checks it. How about a BUG()!? -AK */ /* Why do we have this when nobody checks it. How about a BUG()!? -AK */
if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095))) if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095))) {
*value = -1;
return -EINVAL; return -EINVAL;
}
addr = pci_dev_base(seg, bus, devfn); addr = pci_dev_base(seg, bus, devfn);
if (!addr) if (!addr)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment