Patch "PCI: Fix dropping valid root bus resources with .end = zero" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    PCI: Fix dropping valid root bus resources with .end = zero

to the 6.1-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:
     pci-fix-dropping-valid-root-bus-resources-with-.end-.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6fe3d8527f7cdceae3d2c194dd7f4ed3e3ad6c65
Author: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
Date:   Fri Feb 10 14:46:39 2023 +0100

    PCI: Fix dropping valid root bus resources with .end = zero
    
    [ Upstream commit 9d8ba74a181b1c81def21168795ed96cbe6f05ed ]
    
    On r8a7791/koelsch:
    
      kmemleak: 1 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
      # cat /sys/kernel/debug/kmemleak
      unreferenced object 0xc3a34e00 (size 64):
        comm "swapper/0", pid 1, jiffies 4294937460 (age 199.080s)
        hex dump (first 32 bytes):
          b4 5d 81 f0 b4 5d 81 f0 c0 b0 a2 c3 00 00 00 00  .]...]..........
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<fe3aa979>] __kmalloc+0xf0/0x140
          [<34bd6bc0>] resource_list_create_entry+0x18/0x38
          [<767046bc>] pci_add_resource_offset+0x20/0x68
          [<b3f3edf2>] devm_of_pci_get_host_bridge_resources.constprop.0+0xb0/0x390
    
    When coalescing two resources for a contiguous aperture, the second
    resource is enlarged to cover the full contiguous range, while the first
    resource is marked invalid.  This invalidation is done by clearing the
    flags, start, and end members.
    
    When adding the initial resources to the bus later, invalid resources are
    skipped.  Unfortunately, the check for an invalid resource considers only
    the end member, causing false positives.
    
    E.g. on r8a7791/koelsch, root bus resource 0 ("bus 00") is skipped, and no
    longer registered with pci_bus_insert_busn_res() (causing the memory leak),
    nor printed:
    
       pci-rcar-gen2 ee090000.pci: host bridge /soc/pci@ee090000 ranges:
       pci-rcar-gen2 ee090000.pci:      MEM 0x00ee080000..0x00ee08ffff -> 0x00ee080000
       pci-rcar-gen2 ee090000.pci: PCI: revision 11
       pci-rcar-gen2 ee090000.pci: PCI host bridge to bus 0000:00
      -pci_bus 0000:00: root bus resource [bus 00]
       pci_bus 0000:00: root bus resource [mem 0xee080000-0xee08ffff]
    
    Fix this by only skipping resources where all of the flags, start, and end
    members are zero.
    
    Fixes: 7c3855c423b17f6c ("PCI: Coalesce host bridge contiguous apertures")
    Link: https://lore.kernel.org/r/da0fcd5e86c74239be79c7cb03651c0fce31b515.1676036673.git.geert+renesas@xxxxxxxxx
    Tested-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
    Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
    Acked-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 1d6f7b502020d..90e676439170b 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -994,7 +994,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
 	resource_list_for_each_entry_safe(window, n, &resources) {
 		offset = window->offset;
 		res = window->res;
-		if (!res->end)
+		if (!res->flags && !res->start && !res->end)
 			continue;
 
 		list_move_tail(&window->node, &bridge->windows);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux