diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2021-02-02 11:03:32 +0100 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2021-02-17 17:31:06 -0600 |
commit | f6bda644fa3a7070621c3bf12cd657f69a42f170 (patch) | |
tree | fa6cecd652b9c96a5faf696d596c1a4cb3acc164 /lib/vsprintf.c | |
parent | f8ee579d53aca887d93f5f411462f25c085a5106 (diff) | |
download | linux-f6bda644fa3a7070621c3bf12cd657f69a42f170.tar.bz2 |
PCI: Fix pci_register_io_range() memory leak
Kmemleak reports:
unreferenced object 0xc328de40 (size 64):
comm "kworker/1:1", pid 21, jiffies 4294938212 (age 1484.670s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 e0 d8 fc eb 00 00 00 00 ................
00 00 10 fe 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<ad758d10>] pci_register_io_range+0x3c/0x80
[<2c7f139e>] of_pci_range_to_resource+0x48/0xc0
[<f079ecc8>] devm_of_pci_get_host_bridge_resources.constprop.0+0x2ac/0x3ac
[<e999753b>] devm_of_pci_bridge_init+0x60/0x1b8
[<a895b229>] devm_pci_alloc_host_bridge+0x54/0x64
[<e451ddb0>] rcar_pcie_probe+0x2c/0x644
In case a PCI host driver's probe is deferred, the same I/O range may be
allocated again, and be ignored, causing a memory leak.
Fix this by (a) letting logic_pio_register_range() return -EEXIST if the
passed range already exists, so pci_register_io_range() will free it, and
by (b) making pci_register_io_range() not consider -EEXIST an error
condition.
Link: https://lore.kernel.org/r/20210202100332.829047-1-geert+renesas@glider.be
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'lib/vsprintf.c')
0 files changed, 0 insertions, 0 deletions