Skip to content

Commit

Permalink
net: dsa: Avoid null pointer when failing to connect to PHY
Browse files Browse the repository at this point in the history
When phylink_of_phy_connect fails, dsa_slave_phy_setup tries to save the
day by connecting to an alternative PHY, none other than a PHY on the
switch's internal MDIO bus, at an address equal to the port's index.

However this does not take into consideration the scenario when the
switch that failed to probe an external PHY does not have an internal
MDIO bus at all.

Fixes: aab9c40 ("net: dsa: Plug in PHYLINK support")
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vladimir Oltean authored and David S. Miller committed Mar 26, 2019
1 parent 9675db3 commit 6146dd4
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions net/dsa/slave.c
Original file line number Diff line number Diff line change
Expand Up @@ -1283,9 +1283,9 @@ static int dsa_slave_phy_setup(struct net_device *slave_dev)
phy_flags = ds->ops->get_phy_flags(ds, dp->index);

ret = phylink_of_phy_connect(dp->pl, port_dn, phy_flags);
if (ret == -ENODEV) {
/* We could not connect to a designated PHY or SFP, so use the
* switch internal MDIO bus instead
if (ret == -ENODEV && ds->slave_mii_bus) {
/* We could not connect to a designated PHY or SFP, so try to
* use the switch internal MDIO bus instead
*/
ret = dsa_slave_phy_connect(slave_dev, dp->index);
if (ret) {
Expand All @@ -1297,7 +1297,7 @@ static int dsa_slave_phy_setup(struct net_device *slave_dev)
}
}

return 0;
return ret;
}

static struct lock_class_key dsa_slave_netdev_xmit_lock_key;
Expand Down

0 comments on commit 6146dd4

Please sign in to comment.