aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/core.c')
-rw-r--r--net/tipc/core.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/net/tipc/core.c b/net/tipc/core.c
index 7c09670120eb..4a8b7955e0e0 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -68,8 +68,14 @@ static int __net_init tipc_init_net(struct net *net)
68 err = tipc_nametbl_init(net); 68 err = tipc_nametbl_init(net);
69 if (err) 69 if (err)
70 goto out_nametbl; 70 goto out_nametbl;
71
72 err = tipc_subscr_start(net);
73 if (err)
74 goto out_subscr;
71 return 0; 75 return 0;
72 76
77out_subscr:
78 tipc_nametbl_stop(net);
73out_nametbl: 79out_nametbl:
74 tipc_sk_rht_destroy(net); 80 tipc_sk_rht_destroy(net);
75out_sk_rht: 81out_sk_rht:
@@ -78,6 +84,7 @@ out_sk_rht:
78 84
79static void __net_exit tipc_exit_net(struct net *net) 85static void __net_exit tipc_exit_net(struct net *net)
80{ 86{
87 tipc_subscr_stop(net);
81 tipc_net_stop(net); 88 tipc_net_stop(net);
82 tipc_nametbl_stop(net); 89 tipc_nametbl_stop(net);
83 tipc_sk_rht_destroy(net); 90 tipc_sk_rht_destroy(net);
@@ -104,10 +111,6 @@ static int __init tipc_init(void)
104 111
105 get_random_bytes(&tipc_random, sizeof(tipc_random)); 112 get_random_bytes(&tipc_random, sizeof(tipc_random));
106 113
107 err = register_pernet_subsys(&tipc_net_ops);
108 if (err)
109 goto out_pernet;
110
111 err = tipc_netlink_start(); 114 err = tipc_netlink_start();
112 if (err) 115 if (err)
113 goto out_netlink; 116 goto out_netlink;
@@ -120,9 +123,9 @@ static int __init tipc_init(void)
120 if (err) 123 if (err)
121 goto out_sysctl; 124 goto out_sysctl;
122 125
123 err = tipc_subscr_start(); 126 err = register_pernet_subsys(&tipc_net_ops);
124 if (err) 127 if (err)
125 goto out_subscr; 128 goto out_pernet;
126 129
127 err = tipc_bearer_setup(); 130 err = tipc_bearer_setup();
128 if (err) 131 if (err)
@@ -131,28 +134,25 @@ static int __init tipc_init(void)
131 pr_info("Started in single node mode\n"); 134 pr_info("Started in single node mode\n");
132 return 0; 135 return 0;
133out_bearer: 136out_bearer:
134 tipc_subscr_stop(); 137 unregister_pernet_subsys(&tipc_net_ops);
135out_subscr: 138out_pernet:
136 tipc_unregister_sysctl(); 139 tipc_unregister_sysctl();
137out_sysctl: 140out_sysctl:
138 tipc_socket_stop(); 141 tipc_socket_stop();
139out_socket: 142out_socket:
140 tipc_netlink_stop(); 143 tipc_netlink_stop();
141out_netlink: 144out_netlink:
142 unregister_pernet_subsys(&tipc_net_ops);
143out_pernet:
144 pr_err("Unable to start in single node mode\n"); 145 pr_err("Unable to start in single node mode\n");
145 return err; 146 return err;
146} 147}
147 148
148static void __exit tipc_exit(void) 149static void __exit tipc_exit(void)
149{ 150{
150 unregister_pernet_subsys(&tipc_net_ops);
151 tipc_bearer_cleanup(); 151 tipc_bearer_cleanup();
152 tipc_netlink_stop(); 152 tipc_netlink_stop();
153 tipc_subscr_stop();
154 tipc_socket_stop(); 153 tipc_socket_stop();
155 tipc_unregister_sysctl(); 154 tipc_unregister_sysctl();
155 unregister_pernet_subsys(&tipc_net_ops);
156 156
157 pr_info("Deactivated\n"); 157 pr_info("Deactivated\n");
158} 158}