[netdrvr] phy: Fix bugs in error handling
The recent __must_check stuff flagged some error handling bugs. phy/fixed.c: * handle device_bind_driver() failure phy/phy_device.c: * handle device_bind_driver() failure * release rwsem upon failure Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@ -289,9 +289,13 @@ static int fixed_mdio_register_device(int number, int speed, int duplex)
|
|||||||
goto probe_fail;
|
goto probe_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
device_bind_driver(&phydev->dev);
|
err = device_bind_driver(&phydev->dev);
|
||||||
|
|
||||||
up_write(&phydev->dev.bus->subsys.rwsem);
|
up_write(&phydev->dev.bus->subsys.rwsem);
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
goto probe_fail;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
probe_fail:
|
probe_fail:
|
||||||
|
@ -212,11 +212,13 @@ struct phy_device *phy_attach(struct net_device *dev,
|
|||||||
|
|
||||||
err = d->driver->probe(d);
|
err = d->driver->probe(d);
|
||||||
|
|
||||||
if (err < 0)
|
if (err >= 0)
|
||||||
return ERR_PTR(err);
|
err = device_bind_driver(d);
|
||||||
|
|
||||||
device_bind_driver(d);
|
|
||||||
up_write(&d->bus->subsys.rwsem);
|
up_write(&d->bus->subsys.rwsem);
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
return ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phydev->attached_dev) {
|
if (phydev->attached_dev) {
|
||||||
|
Reference in New Issue
Block a user