net: loopback: Hold rtnl_net_lock() in blackhole_netdev_init().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Tue, 14 Jan 2025 08:13:52 +0000 (17:13 +0900)
committerJakub Kicinski <kuba@kernel.org>
Wed, 15 Jan 2025 22:20:08 +0000 (14:20 -0800)
blackhole_netdev is the global device in init_net.

Let's hold rtnl_net_lock(&init_net) in blackhole_netdev_init().

While at it, the unnecessary dev_net_set() call is removed, which
is done in alloc_netdev_mqs().

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250114081352.47404-1-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/loopback.c

index 1993b90..c8840c3 100644 (file)
@@ -264,13 +264,12 @@ static int __init blackhole_netdev_init(void)
        if (!blackhole_netdev)
                return -ENOMEM;
 
-       rtnl_lock();
+       rtnl_net_lock(&init_net);
        dev_init_scheduler(blackhole_netdev);
        dev_activate(blackhole_netdev);
-       rtnl_unlock();
+       rtnl_net_unlock(&init_net);
 
        blackhole_netdev->flags |= IFF_UP | IFF_RUNNING;
-       dev_net_set(blackhole_netdev, &init_net);
 
        return 0;
 }