Re: [PATCH net-next v2 11/11] net: ethtool: make sure __ethtool_get_link_ksettings() is ops-locked
From: Nicolai Buchwitz <hidden>
Date: 2026-06-03 07:18:26
Also in:
linux-leds
Hi Jakub On 3.6.2026 03:28, Jakub Kicinski wrote:
quoted hunk ↗ jump to hunk
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(). Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- net/ethtool/ioctl.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 49da873b673d..a4b0cbae4063 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c@@ -439,7 +439,7 @@ struct ethtool_link_usettings { int netif_get_link_ksettings(struct net_device *dev, 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) return -EOPNOTSUPP;@@ -456,10 +456,14 @@ EXPORT_SYMBOL(netif_get_link_ksettings); int __ethtool_get_link_ksettings(struct net_device *dev, struct ethtool_link_ksettings *link_ksettings) { + int ret; + ASSERT_RTNL(); - /* once callers fixed - take the ops lock around this call */ - return netif_get_link_ksettings(dev, link_ksettings); + netdev_lock_ops(dev); + ret = netif_get_link_ksettings(dev, link_ksettings); + netdev_unlock_ops(dev); + return ret; } EXPORT_SYMBOL(__ethtool_get_link_ksettings);
Reviewed-by: Nicolai Buchwitz <redacted> Thanks Nicolai