net: mv643xx_eth: Do not clobber PHY link outside of state machine
authorFlorian Fainelli <f.fainelli@gmail.com>
Mon, 6 Feb 2017 23:55:20 +0000 (15:55 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Feb 2017 18:48:21 +0000 (13:48 -0500)
Calling phy_read_status() means that we may call into
genphy_read_status() which in turn will use genphy_update_link() which
can make changes to phydev->link outside of the state machine's state
transitions. This is an invalid behavior that is now caught as of
811a919135b9 ("phy state machine: failsafe leave invalid RUNNING state")

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mv643xx_eth.c

index 20cb7f0de601af8e6903ed41aaa322fd4bcc0509..25642dee49d328f0ab963d03d06e507bdbfeddbc 100644 (file)
@@ -1504,9 +1504,7 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,
        int err;
        u32 supported, advertising;
 
-       err = phy_read_status(dev->phydev);
-       if (err == 0)
-               err = phy_ethtool_ksettings_get(dev->phydev, cmd);
+       err = phy_ethtool_ksettings_get(dev->phydev, cmd);
 
        /*
         * The MAC does not support 1000baseT_Half.