net/smc: reduce rtnl pressure in smc_pnet_create_pnetids_list()
[linux-2.6-microblaze.git] / net / smc / smc_pnet.c
index 9f2c58c..2adb92b 100644 (file)
@@ -806,6 +806,16 @@ static void smc_pnet_create_pnetids_list(struct net *net)
        u8 ndev_pnetid[SMC_MAX_PNETID_LEN];
        struct net_device *dev;
 
+       /* Newly created netns do not have devices.
+        * Do not even acquire rtnl.
+        */
+       if (list_empty(&net->dev_base_head))
+               return;
+
+       /* Note: This might not be needed, because smc_pnet_netdev_event()
+        * is also calling smc_pnet_add_base_pnetid() when handling
+        * NETDEV_UP event.
+        */
        rtnl_lock();
        for_each_netdev(net, dev)
                smc_pnet_add_base_pnetid(net, dev, ndev_pnetid);