]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: add missing serdes power down in error paths
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 3 Feb 2026 10:01:24 +0000 (10:01 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 5 Feb 2026 04:51:38 +0000 (20:51 -0800)
The open path is missing cleanup of a successful serdes power up if
stmmac_hw_setup() or stmmac_request_irq() fails.

stmmac_resume() is also missing cleanup of the serdes power up if
stmmac_hw_setup() fails.

Add the missing cleanups.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vnDDo-00000007Xx9-3RZ8@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index 9efdde9152292882336c83e40d47b2b162cbf938..05b0b080bade974ea3ea7de5ab58834c8c1c74ce 100644 (file)
@@ -4137,7 +4137,7 @@ static int __stmmac_open(struct net_device *dev,
        if (!(priv->plat->flags & STMMAC_FLAG_SERDES_UP_AFTER_PHY_LINKUP)) {
                ret = stmmac_legacy_serdes_power_up(priv);
                if (ret < 0)
-                       goto init_error;
+                       return ret;
        }
 
        ret = stmmac_hw_setup(dev);
@@ -4170,6 +4170,7 @@ irq_error:
 
        stmmac_release_ptp(priv);
 init_error:
+       stmmac_legacy_serdes_power_down(priv);
        return ret;
 }
 
@@ -8273,6 +8274,7 @@ int stmmac_resume(struct device *dev)
        ret = stmmac_hw_setup(ndev);
        if (ret < 0) {
                netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
+               stmmac_legacy_serdes_power_down(priv);
                mutex_unlock(&priv->lock);
                rtnl_unlock();
                return ret;