net: fec_mxc: unregister mdio bus on probe error
authorMåns Rullgård <mans@mansr.com>
Tue, 8 Dec 2015 15:38:46 +0000 (15:38 +0000)
committerStefano Babic <sbabic@denx.de>
Sun, 3 Jan 2016 14:28:06 +0000 (15:28 +0100)
If fecmxc_initialize_multi() fails, it frees but does not unregister
the mdio bus, causing subsequent uses of the "mii" command to crash.
Fix this by adding mdio_unregister() calls where needed.

Signed-off-by: Mans Rullgard <mans@mansr.com>
Reviewed-by: Eric Nelson <eric@nelint.com>
drivers/net/fec_mxc.c

index 798cc165dda7db8032821c7bd9464bcd5b99f023..3340dd256f6ed1db06f876305092eb9447a6cf1b 100644 (file)
@@ -1109,6 +1109,7 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr)
 #ifdef CONFIG_PHYLIB
        phydev = phy_find_by_mask(bus, 1 << phy_id, PHY_INTERFACE_MODE_RGMII);
        if (!phydev) {
+               mdio_unregister(bus);
                free(bus);
                return -ENOMEM;
        }
@@ -1120,6 +1121,7 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr)
 #ifdef CONFIG_PHYLIB
                free(phydev);
 #endif
+               mdio_unregister(bus);
                free(bus);
        }
        return ret;