提交 cfaa202a 编写于 作者: O Oleksij Rempel 提交者: Jakub Kicinski

net: mdiobus: fwnode_mdiobus_register_phy() rework error handling

Rework error handling as preparation for PSE patch. This patch should
make it easier to extend this function.
Signed-off-by: NOleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
Signed-off-by: NJakub Kicinski <kuba@kernel.org>
上级 3114b075
...@@ -110,8 +110,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus, ...@@ -110,8 +110,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
else else
phy = phy_device_create(bus, addr, phy_id, 0, NULL); phy = phy_device_create(bus, addr, phy_id, 0, NULL);
if (IS_ERR(phy)) { if (IS_ERR(phy)) {
unregister_mii_timestamper(mii_ts); rc = PTR_ERR(phy);
return PTR_ERR(phy); goto clean_mii_ts;
} }
if (is_acpi_node(child)) { if (is_acpi_node(child)) {
...@@ -125,17 +125,13 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus, ...@@ -125,17 +125,13 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
/* All data is now stored in the phy struct, so register it */ /* All data is now stored in the phy struct, so register it */
rc = phy_device_register(phy); rc = phy_device_register(phy);
if (rc) { if (rc) {
phy_device_free(phy);
fwnode_handle_put(phy->mdio.dev.fwnode); fwnode_handle_put(phy->mdio.dev.fwnode);
return rc; goto clean_phy;
} }
} else if (is_of_node(child)) { } else if (is_of_node(child)) {
rc = fwnode_mdiobus_phy_device_register(bus, phy, child, addr); rc = fwnode_mdiobus_phy_device_register(bus, phy, child, addr);
if (rc) { if (rc)
unregister_mii_timestamper(mii_ts); goto clean_phy;
phy_device_free(phy);
return rc;
}
} }
/* phy->mii_ts may already be defined by the PHY driver. A /* phy->mii_ts may already be defined by the PHY driver. A
...@@ -145,5 +141,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus, ...@@ -145,5 +141,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
if (mii_ts) if (mii_ts)
phy->mii_ts = mii_ts; phy->mii_ts = mii_ts;
return 0; return 0;
clean_phy:
phy_device_free(phy);
clean_mii_ts:
unregister_mii_timestamper(mii_ts);
return rc;
} }
EXPORT_SYMBOL(fwnode_mdiobus_register_phy); EXPORT_SYMBOL(fwnode_mdiobus_register_phy);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册