Geert Uytterhoeven
6a8b02ead7
PCI: Fix pci_register_io_range() memory leak
[ Upstream commit f6bda644fa ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-03-17 16:43:46 +01:00
..
2020-11-10 12:35:57 +01:00
2020-06-22 09:05:14 +02:00
2020-04-23 10:30:15 +02:00
2020-06-25 15:33:02 +02:00
2019-12-01 09:17:08 +01:00
2019-11-20 18:47:11 +01:00
2020-10-30 10:38:21 +01:00
2020-11-10 12:35:57 +01:00
2020-05-10 10:30:11 +02:00
2019-11-12 19:20:37 +01:00
2020-08-19 08:14:53 +02:00
2020-04-17 10:48:43 +02:00
2021-01-12 20:10:16 +01:00
2019-12-17 20:36:02 +01:00
2019-10-07 18:57:17 +02:00
2020-01-27 14:51:08 +01:00
2021-03-17 16:43:46 +01:00
2020-05-27 17:37:27 +02:00
2019-12-05 09:19:40 +01:00
2020-11-18 19:18:52 +01:00
2020-11-05 11:08:45 +01:00
2020-02-28 16:38:55 +01:00
2021-02-13 13:51:15 +01:00
2020-06-22 09:04:59 +02:00
2020-06-22 09:04:59 +02:00
2020-02-11 04:33:57 -08:00
2020-08-21 11:05:38 +02:00
2019-10-29 09:19:35 +01:00