1 From 1b980e4f8bd508051c7d00744a766aaaf1a0c737 Mon Sep 17 00:00:00 2001 2 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org> 3 Date: Thu, 11 Mar 2021 11:56:45 +0100 4 Subject: [PATCH 6/7] PCI: aardvark: Free config space for emulated root bridge 5 when unbinding driver to fix memory leak 6 MIME-Version: 1.0 7 Content-Type: text/plain; charset=UTF-8 8 Content-Transfer-Encoding: 8bit 9 10 Do it after disabling and masking all interrupts, since aardvark interrupt 11 handler accesses config space of emulated root bridge. 12 13 Fixes: 526a76991b7b ("PCI: aardvark: Implement driver 'remove' function and allow to build it as module") 14 Signed-off-by: Pali Rohár <pali@kernel.org> 15 Signed-off-by: Marek Behún <kabel@kernel.org> 16 Cc: stable@vger.kernel.org 17 --- 18 drivers/pci/controller/pci-aardvark.c | 3 +++ 19 1 file changed, 3 insertions(+) 20 21 diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c 22 index 08b34accfe2f..b3d89cb449b6 100644 23 --- a/drivers/pci/controller/pci-aardvark.c 24 +++ b/drivers/pci/controller/pci-aardvark.c 25 @@ -1734,6 +1734,9 @@ static int advk_pcie_remove(struct platform_device *pdev) 26 advk_pcie_remove_msi_irq_domain(pcie); 27 advk_pcie_remove_irq_domain(pcie); 28 29 + /* Free config space for emulated root bridge */ 30 + pci_bridge_emul_cleanup(&pcie->bridge); 31 + 32 /* Disable outbound address windows mapping */ 33 for (i = 0; i < OB_WIN_COUNT; i++) 34 advk_pcie_disable_ob_win(pcie, i); 35 -- 36 2.32.0 37