Description
In the Linux kernel, the following vulnerability has been resolved: PCI: Fix dropping valid root bus resources with .end = zero 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.
Product status
fd168b7d1d7cfc61cea561b1e3cc47aefc9e8f19 (git) before e4af080f3ef6a65b0d702988c2471a47c9ae2cc0
7c3855c423b17f6ca211858afb0cef20569914c7 (git) before fe6a1fbe83f5b23d7db93596b793561230f06b40
7c3855c423b17f6ca211858afb0cef20569914c7 (git) before 7e6f2714d93cdf977b6124a80af2cf0e14e2d407
7c3855c423b17f6ca211858afb0cef20569914c7 (git) before 9d8ba74a181b1c81def21168795ed96cbe6f05ed
5.16
Any version before 5.16
6.1.16 (semver)
6.2.3 (semver)
6.3 (original_commit_for_fix)
References
git.kernel.org/...c/e4af080f3ef6a65b0d702988c2471a47c9ae2cc0
git.kernel.org/...c/fe6a1fbe83f5b23d7db93596b793561230f06b40
git.kernel.org/...c/7e6f2714d93cdf977b6124a80af2cf0e14e2d407
git.kernel.org/...c/9d8ba74a181b1c81def21168795ed96cbe6f05ed