Commit 486942ea authored by Jose Abreu's avatar Jose Abreu Committed by Greg Kroah-Hartman
Browse files

net: stmmac: Fix PCI module removal leak

[ Upstream commit 6dea7e18 ]

Since commit b7d0f08e, the enable / disable of PCI device is not
managed which will result in IO regions not being automatically unmapped.
As regions continue mapped it is currently not possible to remove and
then probe again the PCI module of stmmac.

Fix this by manually unmapping regions on remove callback.

Changes from v1:
- Fix build error

Cc: Joao Pinto <jpinto@synopsys.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Fixes: b7d0f08e

 ("net: stmmac: Fix WoL for PCI-based setups")
Signed-off-by: default avatarJose Abreu <joabreu@synopsys.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent b1bf951d
...@@ -299,7 +299,17 @@ static int stmmac_pci_probe(struct pci_dev *pdev, ...@@ -299,7 +299,17 @@ static int stmmac_pci_probe(struct pci_dev *pdev,
*/ */
static void stmmac_pci_remove(struct pci_dev *pdev) static void stmmac_pci_remove(struct pci_dev *pdev)
{ {
int i;
stmmac_dvr_remove(&pdev->dev); stmmac_dvr_remove(&pdev->dev);
for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
if (pci_resource_len(pdev, i) == 0)
continue;
pcim_iounmap_regions(pdev, BIT(i));
break;
}
pci_disable_device(pdev); pci_disable_device(pdev);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment