From f49deaa64af10276ef0c9a09558152f990b5f3b1 Mon Sep 17 00:00:00 2001 From: Jakub Kicinski Date: Sat, 30 Oct 2021 10:18:48 -0700 Subject: ethtool: push the rtnl_lock into dev_ethtool() Don't take the lock in net/core/dev_ioctl.c, we'll have things to do outside rtnl_lock soon. Signed-off-by: Jakub Kicinski Reviewed-by: Leon Romanovsky Signed-off-by: David S. Miller --- net/ethtool/ioctl.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'net/ethtool/ioctl.c') diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 44430b6ab843..52bfc5b82ec3 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -2700,7 +2700,8 @@ static int ethtool_set_fecparam(struct net_device *dev, void __user *useraddr) /* The main entry point in this file. Called from net/core/dev_ioctl.c */ -int dev_ethtool(struct net *net, struct ifreq *ifr, void __user *useraddr) +static int +__dev_ethtool(struct net *net, struct ifreq *ifr, void __user *useraddr) { struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name); u32 ethcmd, sub_cmd; @@ -3000,6 +3001,17 @@ out: return rc; } +int dev_ethtool(struct net *net, struct ifreq *ifr, void __user *useraddr) +{ + int rc; + + rtnl_lock(); + rc = __dev_ethtool(net, ifr, useraddr); + rtnl_unlock(); + + return rc; +} + struct ethtool_rx_flow_key { struct flow_dissector_key_basic basic; union { -- cgit v1.2.3