diff options
Diffstat (limited to 'net/tipc/core.c')
-rw-r--r-- | net/tipc/core.c | 24 |
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 | ||
77 | out_subscr: | ||
78 | tipc_nametbl_stop(net); | ||
73 | out_nametbl: | 79 | out_nametbl: |
74 | tipc_sk_rht_destroy(net); | 80 | tipc_sk_rht_destroy(net); |
75 | out_sk_rht: | 81 | out_sk_rht: |
@@ -78,6 +84,7 @@ out_sk_rht: | |||
78 | 84 | ||
79 | static void __net_exit tipc_exit_net(struct net *net) | 85 | static 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; |
133 | out_bearer: | 136 | out_bearer: |
134 | tipc_subscr_stop(); | 137 | unregister_pernet_subsys(&tipc_net_ops); |
135 | out_subscr: | 138 | out_pernet: |
136 | tipc_unregister_sysctl(); | 139 | tipc_unregister_sysctl(); |
137 | out_sysctl: | 140 | out_sysctl: |
138 | tipc_socket_stop(); | 141 | tipc_socket_stop(); |
139 | out_socket: | 142 | out_socket: |
140 | tipc_netlink_stop(); | 143 | tipc_netlink_stop(); |
141 | out_netlink: | 144 | out_netlink: |
142 | unregister_pernet_subsys(&tipc_net_ops); | ||
143 | out_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 | ||
148 | static void __exit tipc_exit(void) | 149 | static 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 | } |