Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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);

+3 −1
Original line number Diff line number Diff line
@@ -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)
+3 −1
Original line number Diff line number Diff line
@@ -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)