Balance phy_connect() on probe failure and removal. Otherwise PHY interrupts, device references and the attachment to the freed netdev survive teardown. Disconnect before unregistering the bus while its MDIO callbacks and MAC registers remain usable. Fixes: 0638dec01e89 ("[PATCH] net: au1000_eth: PHY framework conversion") Signed-off-by: Florian Fainelli --- drivers/net/ethernet/amd/au1000_eth.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/amd/au1000_eth.c b/drivers/net/ethernet/amd/au1000_eth.c index 58bc8e1b539d..70319b432182 100644 --- a/drivers/net/ethernet/amd/au1000_eth.c +++ b/drivers/net/ethernet/amd/au1000_eth.c @@ -1287,6 +1287,8 @@ static int au1000_probe(struct platform_device *pdev) return 0; err_out: + if (dev->phydev) + phy_disconnect(dev->phydev); if (aup->mii_bus) mdiobus_unregister(aup->mii_bus); @@ -1334,6 +1336,8 @@ static void au1000_remove(struct platform_device *pdev) struct resource *base, *macen; unregister_netdev(dev); + if (dev->phydev) + phy_disconnect(dev->phydev); mdiobus_unregister(aup->mii_bus); mdiobus_free(aup->mii_bus); -- 2.53.0