diff options
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 21 | 
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 0c2014accba7..61921d4dbb13 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -3451,23 +3451,30 @@ static int __init phy_init(void)  {  	int rc; +	ethtool_set_ethtool_phy_ops(&phy_ethtool_phy_ops); +  	rc = mdio_bus_init();  	if (rc) -		return rc; +		goto err_ethtool_phy_ops; -	ethtool_set_ethtool_phy_ops(&phy_ethtool_phy_ops);  	features_init();  	rc = phy_driver_register(&genphy_c45_driver, THIS_MODULE);  	if (rc) -		goto err_c45; +		goto err_mdio_bus;  	rc = phy_driver_register(&genphy_driver, THIS_MODULE); -	if (rc) { -		phy_driver_unregister(&genphy_c45_driver); +	if (rc) +		goto err_c45; + +	return 0; +  err_c45: -		mdio_bus_exit(); -	} +	phy_driver_unregister(&genphy_c45_driver); +err_mdio_bus: +	mdio_bus_exit(); +err_ethtool_phy_ops: +	ethtool_set_ethtool_phy_ops(NULL);  	return rc;  }  | 
