This is a note to let you know that I've just added the patch titled MIPS: Fix off-by-one in pci_resource_to_user() to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: mips-fix-off-by-one-in-pci_resource_to_user.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 38c0a74fe06da3be133cae3fb7bde6a9438e698b Mon Sep 17 00:00:00 2001 From: Paul Burton <paul.burton@xxxxxxxx> Date: Thu, 12 Jul 2018 09:33:04 -0700 Subject: MIPS: Fix off-by-one in pci_resource_to_user() From: Paul Burton <paul.burton@xxxxxxxx> 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. Signed-off-by: Paul Burton <paul.burton@xxxxxxxx> Reported-by: Rui Wang <rui.wang@xxxxxxxxxxxxx> Fixes: 4c2924b725fb ("MIPS: PCI: Use pci_resource_to_user to map pci memory space properly") Cc: James Hogan <jhogan@xxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Wolfgang Grandegger <wg@xxxxxxxxxxxxxx> Cc: linux-mips@xxxxxxxxxxxxxx Cc: stable@xxxxxxxxxxxxxxx # v3.12+ Patchwork: https://patchwork.linux-mips.org/patch/19829/ Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/mips/pci/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/mips/pci/pci.c +++ b/arch/mips/pci/pci.c @@ -55,7 +55,7 @@ void pci_resource_to_user(const struct p phys_addr_t size = resource_size(rsrc); *start = fixup_bigphys_addr(rsrc->start, size); - *end = rsrc->start + size; + *end = rsrc->start + size - 1; } int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, Patches currently in stable-queue which might be from paul.burton@xxxxxxxx are queue-4.9/mips-fix-off-by-one-in-pci_resource_to_user.patch queue-4.9/mips-ath79-fix-register-address-in-ath79_ddr_wb_flush.patch