ethtool: Protect {get, set}_phy_tunable with PHY device mutex
authorFlorian Fainelli <f.fainelli@gmail.com>
Tue, 22 Nov 2016 21:55:31 +0000 (13:55 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 Nov 2016 21:02:32 +0000 (16:02 -0500)
commit4b65246b427152fc7e8e1f673d3f0dc7582a89af
tree28220d54e14d9ea7026adcdf13628d4815aa93ce
parentfab96ec86771a5815024651cc1356783c70f55b1
ethtool: Protect {get, set}_phy_tunable with PHY device mutex

PHY drivers should be able to rely on the caller of {get,set}_tunable to
have acquired the PHY device mutex, in order to both serialize against
concurrent calls of these functions, but also against PHY state machine
changes. All ethtool PHY-level functions do this, except
{get,set}_tunable, so we make them consistent here as well.

We need to update the Microsemi PHY driver in the same commit to avoid
introducing either deadlocks, or lack of proper locking.

Fixes: 968ad9da7e0e ("ethtool: Implements ETHTOOL_PHY_GTUNABLE/ETHTOOL_PHY_STUNABLE")
Fixes: 310d9ad57ae0 ("net: phy: Add downshift get/set support in Microsemi PHYs driver")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Allan W. Nielsen <allan.nielsen@microsemi.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mscc.c
net/core/ethtool.c