Skip to content

Commit

Permalink
[netdrvr] phy: Fix bugs in error handling
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jeff Garzik committed Oct 1, 2006
1 parent 1c7da74 commit b7a00ec
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
6 changes: 5 additions & 1 deletion drivers/net/phy/fixed.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,9 +289,13 @@ static int fixed_mdio_register_device(int number, int speed, int duplex)
goto probe_fail;
}

device_bind_driver(&phydev->dev);
err = device_bind_driver(&phydev->dev);

up_write(&phydev->dev.bus->subsys.rwsem);

if (err)
goto probe_fail;

return 0;

probe_fail:
Expand Down
8 changes: 5 additions & 3 deletions drivers/net/phy/phy_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,11 +212,13 @@ struct phy_device *phy_attach(struct net_device *dev,

err = d->driver->probe(d);

if (err < 0)
return ERR_PTR(err);
if (err >= 0)
err = device_bind_driver(d);

device_bind_driver(d);
up_write(&d->bus->subsys.rwsem);

if (err)
return ERR_PTR(err);
}

if (phydev->attached_dev) {
Expand Down

0 comments on commit b7a00ec

Please sign in to comment.