dev: Hold per-netns RTNL in (un)?register_netdev().
Let's hold per-netns RTNL of dev_net(dev) in register_netdev() and unregister_netdev(). Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
7bd72a4aa2
commit
00fb982393
1 changed files with 10 additions and 4 deletions
|
@ -10731,12 +10731,16 @@ EXPORT_SYMBOL_GPL(init_dummy_netdev);
|
||||||
*/
|
*/
|
||||||
int register_netdev(struct net_device *dev)
|
int register_netdev(struct net_device *dev)
|
||||||
{
|
{
|
||||||
|
struct net *net = dev_net(dev);
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (rtnl_lock_killable())
|
if (rtnl_net_lock_killable(net))
|
||||||
return -EINTR;
|
return -EINTR;
|
||||||
|
|
||||||
err = register_netdevice(dev);
|
err = register_netdevice(dev);
|
||||||
rtnl_unlock();
|
|
||||||
|
rtnl_net_unlock(net);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(register_netdev);
|
EXPORT_SYMBOL(register_netdev);
|
||||||
|
@ -11606,9 +11610,11 @@ EXPORT_SYMBOL(unregister_netdevice_many);
|
||||||
*/
|
*/
|
||||||
void unregister_netdev(struct net_device *dev)
|
void unregister_netdev(struct net_device *dev)
|
||||||
{
|
{
|
||||||
rtnl_lock();
|
struct net *net = dev_net(dev);
|
||||||
|
|
||||||
|
rtnl_net_lock(net);
|
||||||
unregister_netdevice(dev);
|
unregister_netdevice(dev);
|
||||||
rtnl_unlock();
|
rtnl_net_unlock(net);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(unregister_netdev);
|
EXPORT_SYMBOL(unregister_netdev);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue