From f050c90ec9092b20d04f554e7710486ae652da63 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Mon, 28 Mar 2011 14:54:08 +0000 Subject: [PATCH] --- yaml --- r: 243557 b: refs/heads/master c: d005a09edf8b12dd1bec651b2cf94caa0e7bb1be h: refs/heads/master i: 243555: 3a9f55567a68dc3772ac810cceeab3bc22b872e9 v: v3 --- [refs] | 2 +- trunk/drivers/net/phy/phy_device.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 0f80a4f587e6..370f9309ff8d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff9a57a62afbbe2d0f3a09af321f1fd7645f38a5 +refs/heads/master: d005a09edf8b12dd1bec651b2cf94caa0e7bb1be diff --git a/trunk/drivers/net/phy/phy_device.c b/trunk/drivers/net/phy/phy_device.c index 993c52c82aeb..e870c0698bbe 100644 --- a/trunk/drivers/net/phy/phy_device.c +++ b/trunk/drivers/net/phy/phy_device.c @@ -442,11 +442,11 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, u32 flags, phy_interface_t interface) { struct device *d = &phydev->dev; + int err; /* Assume that if there is no driver, that it doesn't * exist, and we should use the genphy driver. */ if (NULL == d->driver) { - int err; d->driver = &genphy_driver.driver; err = d->driver->probe(d); @@ -474,7 +474,11 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, /* Do initial configuration here, now that * we have certain key parameters * (dev_flags and interface) */ - return phy_init_hw(phydev); + err = phy_init_hw(phydev); + if (err) + phy_detach(phydev); + + return err; } /**