mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
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 <kuba@kernel.org> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c6e03dbe0c
commit
f49deaa64a
@ -518,9 +518,7 @@ int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr,
|
|||||||
|
|
||||||
case SIOCETHTOOL:
|
case SIOCETHTOOL:
|
||||||
dev_load(net, ifr->ifr_name);
|
dev_load(net, ifr->ifr_name);
|
||||||
rtnl_lock();
|
|
||||||
ret = dev_ethtool(net, ifr, data);
|
ret = dev_ethtool(net, ifr, data);
|
||||||
rtnl_unlock();
|
|
||||||
if (colon)
|
if (colon)
|
||||||
*colon = ':';
|
*colon = ':';
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -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 */
|
/* 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);
|
struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
|
||||||
u32 ethcmd, sub_cmd;
|
u32 ethcmd, sub_cmd;
|
||||||
@ -3000,6 +3001,17 @@ out:
|
|||||||
return rc;
|
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 ethtool_rx_flow_key {
|
||||||
struct flow_dissector_key_basic basic;
|
struct flow_dissector_key_basic basic;
|
||||||
union {
|
union {
|
||||||
|
Loading…
Reference in New Issue
Block a user