1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

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:
Kuniyuki Iwashima 2025-01-04 17:21:49 +09:00 committed by Paolo Abeni
parent 7bd72a4aa2
commit 00fb982393

View file

@ -10731,12 +10731,16 @@ EXPORT_SYMBOL_GPL(init_dummy_netdev);
*/
int register_netdev(struct net_device *dev)
{
struct net *net = dev_net(dev);
int err;
if (rtnl_lock_killable())
if (rtnl_net_lock_killable(net))
return -EINTR;
err = register_netdevice(dev);
rtnl_unlock();
rtnl_net_unlock(net);
return err;
}
EXPORT_SYMBOL(register_netdev);
@ -11606,9 +11610,11 @@ EXPORT_SYMBOL(unregister_netdevice_many);
*/
void unregister_netdev(struct net_device *dev)
{
rtnl_lock();
struct net *net = dev_net(dev);
rtnl_net_lock(net);
unregister_netdevice(dev);
rtnl_unlock();
rtnl_net_unlock(net);
}
EXPORT_SYMBOL(unregister_netdev);