a460f770f87794cb5046395399a57f175ba3d36e
[openwrt/staging/svanheule.git] /
1 From 2f040a17f5061457ae95035326d3159eddc1e5cc Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
3 Date: Tue, 30 Nov 2021 18:29:10 +0100
4 Subject: [PATCH] PCI: aardvark: Fix memory leak in driver unbind
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 Free config space for emulated root bridge when unbinding driver to fix
10 memory leak. Do it after disabling and masking all interrupts, since
11 aardvark interrupt handler accesses config space of emulated root
12 bridge.
13
14 Link: https://lore.kernel.org/r/20211130172913.9727-9-kabel@kernel.org
15 Signed-off-by: Pali Rohár <pali@kernel.org>
16 Signed-off-by: Marek Behún <kabel@kernel.org>
17 Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
18 ---
19 drivers/pci/controller/pci-aardvark.c | 3 +++
20 1 file changed, 3 insertions(+)
21
22 --- a/drivers/pci/controller/pci-aardvark.c
23 +++ b/drivers/pci/controller/pci-aardvark.c
24 @@ -1737,6 +1737,9 @@ static int advk_pcie_remove(struct platf
25 advk_pcie_remove_msi_irq_domain(pcie);
26 advk_pcie_remove_irq_domain(pcie);
27
28 + /* Free config space for emulated root bridge */
29 + pci_bridge_emul_cleanup(&pcie->bridge);
30 +
31 /* Disable outbound address windows mapping */
32 for (i = 0; i < OB_WIN_COUNT; i++)
33 advk_pcie_disable_ob_win(pcie, i);