OSDN Git Service

net: macb: add of_phy_deregister_fixed_link to error paths
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Wed, 8 Nov 2017 08:56:34 +0000 (09:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 11 Nov 2017 06:27:44 +0000 (15:27 +0900)
We add the call of_phy_deregister_fixed_link to all associated
error paths for memory clean up.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb_main.c

index 5dafcde..cc3f36a 100644 (file)
@@ -611,6 +611,8 @@ static int macb_mii_init(struct macb *bp)
 err_out_unregister_bus:
        mdiobus_unregister(bp->mii_bus);
 err_out_free_mdiobus:
+       if (np && of_phy_is_fixed_link(np))
+               of_phy_deregister_fixed_link(np);
        mdiobus_free(bp->mii_bus);
 err_out:
        return err;
@@ -3550,6 +3552,8 @@ static int macb_probe(struct platform_device *pdev)
 err_out_unregister_mdio:
        phy_disconnect(dev->phydev);
        mdiobus_unregister(bp->mii_bus);
+       if (np && of_phy_is_fixed_link(np))
+               of_phy_deregister_fixed_link(np);
        mdiobus_free(bp->mii_bus);
 
        /* Shutdown the PHY if there is a GPIO reset */
@@ -3572,6 +3576,7 @@ static int macb_remove(struct platform_device *pdev)
 {
        struct net_device *dev;
        struct macb *bp;
+       struct device_node *np = pdev->dev.of_node;
 
        dev = platform_get_drvdata(pdev);
 
@@ -3580,6 +3585,8 @@ static int macb_remove(struct platform_device *pdev)
                if (dev->phydev)
                        phy_disconnect(dev->phydev);
                mdiobus_unregister(bp->mii_bus);
+               if (np && of_phy_is_fixed_link(np))
+                       of_phy_deregister_fixed_link(np);
                dev->phydev = NULL;
                mdiobus_free(bp->mii_bus);