mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
net: ethtool: make sure __ethtool_get_link_ksettings() is ops-locked
All drivers which may call *_get_link_ksettings() on ops-locked devices from paths already holding the ops lock are ready now. Make __ethtool_get_link_ksettings() take the ops lock, and assert that it's held in netif_get_link_ksettings(). Reviewed-by: Nicolai Buchwitz <nb@tipi-net.de> Acked-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20260603012840.2254293-12-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
af1737dab0
commit
9f275c2e90
|
|
@ -439,7 +439,7 @@ struct ethtool_link_usettings {
|
||||||
int netif_get_link_ksettings(struct net_device *dev,
|
int netif_get_link_ksettings(struct net_device *dev,
|
||||||
struct ethtool_link_ksettings *link_ksettings)
|
struct ethtool_link_ksettings *link_ksettings)
|
||||||
{
|
{
|
||||||
/* once callers fixed - assert ops locked */
|
netdev_assert_locked_ops_compat(dev);
|
||||||
|
|
||||||
if (!dev->ethtool_ops->get_link_ksettings)
|
if (!dev->ethtool_ops->get_link_ksettings)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
@ -456,10 +456,14 @@ EXPORT_SYMBOL(netif_get_link_ksettings);
|
||||||
int __ethtool_get_link_ksettings(struct net_device *dev,
|
int __ethtool_get_link_ksettings(struct net_device *dev,
|
||||||
struct ethtool_link_ksettings *link_ksettings)
|
struct ethtool_link_ksettings *link_ksettings)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
ASSERT_RTNL();
|
ASSERT_RTNL();
|
||||||
|
|
||||||
/* once callers fixed - take the ops lock around this call */
|
netdev_lock_ops(dev);
|
||||||
return netif_get_link_ksettings(dev, link_ksettings);
|
ret = netif_get_link_ksettings(dev, link_ksettings);
|
||||||
|
netdev_unlock_ops(dev);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__ethtool_get_link_ksettings);
|
EXPORT_SYMBOL(__ethtool_get_link_ksettings);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user