diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-10-25 21:12:48 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-10-25 21:12:48 +0000 |
commit | 40790e6b84c22a3dcd161690436eaf5061eae298 (patch) | |
tree | 75a3766b59a96f8563cb4f2598ff38ccf772ac81 | |
parent | c185d48b7cfdc88e7cc40ba46b8bfff65bd0af7c (diff) | |
download | upstream-40790e6b84c22a3dcd161690436eaf5061eae298.tar.gz upstream-40790e6b84c22a3dcd161690436eaf5061eae298.tar.bz2 upstream-40790e6b84c22a3dcd161690436eaf5061eae298.zip |
brcm47xx: b44: fix error handling for dummy phy creation
When the mdio bus is unregistered the newly created phy will also be
unregistered and freed.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 38539
-rw-r--r-- | target/linux/brcm47xx/patches-3.10/208-b44-add-dummy-phy-device-if-we-do-not-find-any.patch | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/208-b44-add-dummy-phy-device-if-we-do-not-find-any.patch b/target/linux/brcm47xx/patches-3.10/208-b44-add-dummy-phy-device-if-we-do-not-find-any.patch index fd51a3f61b..db6e5e3eba 100644 --- a/target/linux/brcm47xx/patches-3.10/208-b44-add-dummy-phy-device-if-we-do-not-find-any.patch +++ b/target/linux/brcm47xx/patches-3.10/208-b44-add-dummy-phy-device-if-we-do-not-find-any.patch @@ -9,23 +9,21 @@ Subject: [PATCH 9/9] b44: add dummy phy device if we do not find any --- a/drivers/net/ethernet/broadcom/b44.c +++ b/drivers/net/ethernet/broadcom/b44.c -@@ -2222,6 +2222,8 @@ static int b44_register_phy_one(struct b +@@ -2222,6 +2222,7 @@ static int b44_register_phy_one(struct b struct ssb_device *sdev = bp->sdev; struct phy_device *phydev; int err; -+ bool dummy_phy = false; + struct phy_c45_device_ids c45_ids = {0}; mii_bus = mdiobus_alloc(); if (!mii_bus) { -@@ -2256,9 +2258,21 @@ static int b44_register_phy_one(struct b +@@ -2256,9 +2257,20 @@ static int b44_register_phy_one(struct b phydev = bp->mii_bus->phy_map[bp->phy_addr]; if (!phydev) { - dev_err(sdev->dev, "could not find PHY at %i\n", bp->phy_addr); - err = -ENODEV; - goto err_out_mdiobus_unregister; -+ dummy_phy = true; + dev_info(sdev->dev, "could not find PHY at %i, create dummy one\n", + bp->phy_addr); + @@ -38,27 +36,8 @@ Subject: [PATCH 9/9] b44: add dummy phy device if we do not find any + err = phy_device_register(phydev); + if (err) { + dev_err(sdev->dev, "failed to register MII bus\n"); -+ goto err_out_phy_free; ++ goto err_out_mdiobus_unregister; + } } err = phy_connect_direct(bp->dev, phydev, &b44_adjust_link, -@@ -2266,7 +2280,7 @@ static int b44_register_phy_one(struct b - if (err < 0) { - dev_err(sdev->dev, "could not attach PHY at %i\n", - bp->phy_addr); -- goto err_out_mdiobus_unregister; -+ goto err_out_phy_free; - } - - /* mask with MAC supported features */ -@@ -2288,6 +2302,9 @@ static int b44_register_phy_one(struct b - - return 0; - -+err_out_phy_free: -+ if (phydev && dummy_phy) -+ phy_device_free(phydev); - err_out_mdiobus_unregister: - mdiobus_unregister(mii_bus); - |