[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: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
8c30b1a74a
commit
49c93e84d8
@@ -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,
|
|||||||
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,
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user