tipc: name tipc name table support net namespace
[deliverable/linux.git] / net / tipc / core.c
index 23ff3caa1ce6175c082543a0867453e216c7ea7e..63cde8148aaf759e740dbc8294d22019cb7141e9 100644 (file)
@@ -62,12 +62,24 @@ static int __net_init tipc_init_net(struct net *net)
        spin_lock_init(&tn->node_list_lock);
 
        err = tipc_sk_rht_init(net);
+       if (err)
+               goto out_sk_rht;
+
+       err = tipc_nametbl_init(net);
+       if (err)
+               goto out_nametbl;
+       return 0;
+
+out_nametbl:
+       tipc_sk_rht_destroy(net);
+out_sk_rht:
        return err;
 }
 
 static void __net_exit tipc_exit_net(struct net *net)
 {
        tipc_net_stop(net);
+       tipc_nametbl_stop(net);
        tipc_sk_rht_destroy(net);
 }
 
@@ -98,10 +110,6 @@ static int __init tipc_init(void)
        if (err)
                goto out_pernet;
 
-       err = tipc_nametbl_init();
-       if (err)
-               goto out_nametbl;
-
        err = tipc_netlink_start();
        if (err)
                goto out_netlink;
@@ -133,8 +141,6 @@ out_sysctl:
 out_socket:
        tipc_netlink_stop();
 out_netlink:
-       tipc_nametbl_stop();
-out_nametbl:
        unregister_pernet_subsys(&tipc_net_ops);
 out_pernet:
        pr_err("Unable to start in single node mode\n");
@@ -147,7 +153,6 @@ static void __exit tipc_exit(void)
        tipc_bearer_cleanup();
        tipc_netlink_stop();
        tipc_subscr_stop();
-       tipc_nametbl_stop();
        tipc_socket_stop();
        tipc_unregister_sysctl();
 
This page took 0.038302 seconds and 5 git commands to generate.