Skip to contentSkip to conversation

FAILED: patch "[PATCH] MIPS: Fix off-by-one in pci_resource_to_user()" failed to apply to 4.4-stable tree

PATCH New [email protected] 2 participants 2 messages Jul 26, 2018 – Jul 28, 2018

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

Quoted 1 line

From 38c0a74fe06da3be133cae3fb7bde6a9438e698b Mon Sep 17 00:00:00 2001

From: Paul Burton <[email protected]>
Date: Thu, 12 Jul 2018 09:33:04 -0700
Subject: [PATCH] MIPS: Fix off-by-one in pci_resource_to_user()

The MIPS implementation of pci_resource_to_user() introduced in v3.12 by commit 4c2924b725fb ("MIPS: PCI: Use pci_resource_to_user to map pci memory space properly") incorrectly sets *end to the address of the byte after the resource, rather than the last byte of the resource.

This results in userland seeing resources as a byte larger than they actually are, for example a 32 byte BAR will be reported by a tool such as lspci as being 33 bytes in size:

    Region 2: I/O ports at 1000 [disabled] [size=33]

Correct this by subtracting one from the calculated end address, reporting the correct address to userland.

Fixes 4c2924b725fb ("MIPS: PCI: Use pci_resource_to_user to map pci memory space properly")
Cc James Hogan <[email protected]>
Cc Ralf Baechle <[email protected]>
Cc Wolfgang Grandegger <[email protected]>
Cc [email protected] # v3.12+

Patchwork: https://patchwork.linux-mips.org/patch/19829/

arch/mips/pci/pci.c +1 -1
index 9632436d74d7..c2e94cf5ecda 100644
@@ -54,5 +54,5 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar,
 	phys_addr_t size = resource_size(rsrc);
 
 	*start = fixup_bigphys_addr(rsrc->start, size);
-	*end = rsrc->start + size;
+	*end = rsrc->start + size - 1;
 }
#1 lore raw

PATCH 1/1 MIPS: Fix off-by-one in pci_resource_to_user()

commit 38c0a74fe06da3be133cae3fb7bde6a9438e698b upstream.

The MIPS implementation of pci_resource_to_user() introduced in v3.12 by commit 4c2924b725fb ("MIPS: PCI: Use pci_resource_to_user to map pci memory space properly") incorrectly sets *end to the address of the byte after the resource, rather than the last byte of the resource.

This results in userland seeing resources as a byte larger than they actually are, for example a 32 byte BAR will be reported by a tool such as lspci as being 33 bytes in size:

    Region 2: I/O ports at 1000 [disabled] [size=33]

Correct this by subtracting one from the calculated end address, reporting the correct address to userland.

Fixes 4c2924b725fb ("MIPS: PCI: Use pci_resource_to_user to map pci memory space properly")
Cc James Hogan <[email protected]>
Cc Ralf Baechle <[email protected]>
Cc Wolfgang Grandegger <[email protected]>
Cc [email protected] # v3.12+

Patchwork: https://patchwork.linux-mips.org/patch/19829/

---
 arch/mips/include/asm/pci.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/mips/include/asm/pci.h +1 -1
index 98c31e5d9579..a7bc901819c8 100644
@@ -89,7 +89,7 @@ static inline void pci_resource_to_user(const struct pci_dev *dev, int bar,
 	phys_addr_t size = resource_size(rsrc);
 
 	*start = fixup_bigphys_addr(rsrc->start, size);
-	*end = rsrc->start + size;
+	*end = rsrc->start + size - 1;
 }
 
 /*
Signature · 1 line
2.18.0