]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - net/core/net_namespace.c
net: initialize init_net earlier
[mirror_ubuntu-jammy-kernel.git] / net / core / net_namespace.c
index 9702d2b0d92070fa580b4b1624d51529ef175e47..9745cb6fdf516c12083de5118c36ea7bdf402a13 100644 (file)
@@ -44,13 +44,7 @@ EXPORT_SYMBOL_GPL(net_rwsem);
 static struct key_tag init_net_key_domain = { .usage = REFCOUNT_INIT(1) };
 #endif
 
-struct net init_net = {
-       .ns.count       = REFCOUNT_INIT(1),
-       .dev_base_head  = LIST_HEAD_INIT(init_net.dev_base_head),
-#ifdef CONFIG_KEYS
-       .key_domain     = &init_net_key_domain,
-#endif
-};
+struct net init_net;
 EXPORT_SYMBOL(init_net);
 
 static bool init_net_initialized;
@@ -1081,7 +1075,7 @@ out:
        rtnl_set_sk_err(net, RTNLGRP_NSID, err);
 }
 
-static int __init net_ns_init(void)
+void __init net_ns_init(void)
 {
        struct net_generic *ng;
 
@@ -1102,6 +1096,9 @@ static int __init net_ns_init(void)
 
        rcu_assign_pointer(init_net.gen, ng);
 
+#ifdef CONFIG_KEYS
+       init_net.key_domain = &init_net_key_domain;
+#endif
        down_write(&pernet_ops_rwsem);
        if (setup_net(&init_net, &init_user_ns))
                panic("Could not setup the initial network namespace");
@@ -1116,12 +1113,8 @@ static int __init net_ns_init(void)
                      RTNL_FLAG_DOIT_UNLOCKED);
        rtnl_register(PF_UNSPEC, RTM_GETNSID, rtnl_net_getid, rtnl_net_dumpid,
                      RTNL_FLAG_DOIT_UNLOCKED);
-
-       return 0;
 }
 
-pure_initcall(net_ns_init);
-
 static void free_exit_list(struct pernet_operations *ops, struct list_head *net_exit_list)
 {
        ops_pre_exit_list(ops, net_exit_list);