From 83bd2854162201fec8a3a35621daa2d26601e031 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 1 Oct 2006 07:27:46 -0400 Subject: [PATCH] --- yaml --- r: 37970 b: refs/heads/master c: b7a00ecd557859c4037b6465fdd6c9a49b1fa649 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/phy/fixed.c | 6 +++++- trunk/drivers/net/phy/phy_device.c | 8 +++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index b832678cf3b7..fabdd4402397 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c7da74c4aab595a994beb5fe728ebf0d0b41f59 +refs/heads/master: b7a00ecd557859c4037b6465fdd6c9a49b1fa649 diff --git a/trunk/drivers/net/phy/fixed.c b/trunk/drivers/net/phy/fixed.c index 19f7ee63276f..94b47c8d0ab4 100644 --- a/trunk/drivers/net/phy/fixed.c +++ b/trunk/drivers/net/phy/fixed.c @@ -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: diff --git a/trunk/drivers/net/phy/phy_device.c b/trunk/drivers/net/phy/phy_device.c index ecd3da151e2d..3bbd5e70c209 100644 --- a/trunk/drivers/net/phy/phy_device.c +++ b/trunk/drivers/net/phy/phy_device.c @@ -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) {