mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
[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:
parent
8c30b1a74a
commit
49c93e84d8
@ -19,8 +19,10 @@ int pci_conf1_read(unsigned int seg, unsigned int bus,
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (!value || (bus > 255) || (devfn > 255) || (reg > 255))
|
||||
if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) {
|
||||
*value = -1;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
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;
|
||||
u32 base;
|
||||
|
||||
if (!value || (bus > 255) || (devfn > 255) || (reg > 4095))
|
||||
if (!value || (bus > 255) || (devfn > 255) || (reg > 4095)) {
|
||||
*value = -1;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
base = get_base_addr(seg, bus, devfn);
|
||||
if (!base)
|
||||
|
@ -75,8 +75,10 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
|
||||
char __iomem *addr;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
addr = pci_dev_base(seg, bus, devfn);
|
||||
if (!addr)
|
||||
|
Loading…
Reference in New Issue
Block a user