summary refs log tree commit diff
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2023-03-11 19:34:45 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-03-22 13:33:46 +0100
commit42173a7147e29014c0370eeebb773e22e67c5ea4 (patch)
tree9268611359fde4994a936230374a3fa91172bdad
parenta69b72b57b7d269e833e520ba7500d556e8189b6 (diff)
downloadlinux-42173a7147e29014c0370eeebb773e22e67c5ea4.tar.gz
net: phy: smsc: bail out in lan87xx_read_status if genphy_read_status fails
[ Upstream commit c22c3bbf351e4ce905f082649cffa1ff893ea8c1 ]

If genphy_read_status fails then further access to the PHY may result
in unpredictable behavior. To prevent this bail out immediately if
genphy_read_status fails.

Fixes: 4223dbffed9f ("net: phy: smsc: Re-enable EDPD mode for LAN87xx")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/026aa4f2-36f5-1c10-ab9f-cdb17dda6ac4@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/phy/smsc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index 00d9eff91dcf..df2c5435c5c4 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -199,8 +199,11 @@ static int lan95xx_config_aneg_ext(struct phy_device *phydev)
 static int lan87xx_read_status(struct phy_device *phydev)
 {
 	struct smsc_phy_priv *priv = phydev->priv;
+	int err;
 
-	int err = genphy_read_status(phydev);
+	err = genphy_read_status(phydev);
+	if (err)
+		return err;
 
 	if (!phydev->link && priv->energy_enable && phydev->irq == PHY_POLL) {
 		/* Disable EDPD to wake up PHY */