lkml.org 
[lkml]   [2022]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next v3 4/7] net: mdiobus: fwnode_mdiobus_register_phy() rework error handling
    Date
    Rework error handling as preparation for PSE patch. This patch should
    make it easier to extend this function.

    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    ---
    drivers/net/mdio/fwnode_mdio.c | 21 ++++++++++++---------
    1 file changed, 12 insertions(+), 9 deletions(-)

    diff --git a/drivers/net/mdio/fwnode_mdio.c b/drivers/net/mdio/fwnode_mdio.c
    index 3e79c2c519298..e78ad55c0e091 100644
    --- a/drivers/net/mdio/fwnode_mdio.c
    +++ b/drivers/net/mdio/fwnode_mdio.c
    @@ -108,8 +108,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
    else
    phy = phy_device_create(bus, addr, phy_id, 0, NULL);
    if (IS_ERR(phy)) {
    - unregister_mii_timestamper(mii_ts);
    - return PTR_ERR(phy);
    + rc = PTR_ERR(phy);
    + goto clean_mii_ts;
    }

    if (is_acpi_node(child)) {
    @@ -123,17 +123,13 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
    /* All data is now stored in the phy struct, so register it */
    rc = phy_device_register(phy);
    if (rc) {
    - phy_device_free(phy);
    fwnode_handle_put(phy->mdio.dev.fwnode);
    - return rc;
    + goto clean_phy;
    }
    } else if (is_of_node(child)) {
    rc = fwnode_mdiobus_phy_device_register(bus, phy, child, addr);
    - if (rc) {
    - unregister_mii_timestamper(mii_ts);
    - phy_device_free(phy);
    - return rc;
    - }
    + if (rc)
    + goto clean_phy;
    }

    /* phy->mii_ts may already be defined by the PHY driver. A
    @@ -143,5 +139,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
    if (mii_ts)
    phy->mii_ts = mii_ts;
    return 0;
    +
    +clean_phy:
    + phy_device_free(phy);
    +clean_mii_ts:
    + unregister_mii_timestamper(mii_ts);
    +
    + return rc;
    }
    EXPORT_SYMBOL(fwnode_mdiobus_register_phy);
    --
    2.30.2
    \
     
     \ /
      Last update: 2022-08-27 07:12    [W:3.712 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site