Skip to content

Commit 98f6c53

Browse files
Kirill Tkhaidavem330
authored andcommitted
net: Assign net to net_namespace_list in setup_net()
This patch merges two repeating pieces of code in one, and they will live in setup_net() now. The only change is that assignment: init_net_initialized = true; becomes reordered with: list_add_tail_rcu(&net->list, &net_namespace_list); The order does not have visible effect, and it is a simple cleanup because of: init_net_initialized is used in !CONFIG_NET_NS case to order proc_net_ns_ops registration occuring at boot time: start_kernel()->proc_root_init()->proc_net_init(), with net_ns_init()->setup_net(&init_net, &init_user_ns) also occuring in boot time from the same init_task. When there are no another tasks to race with them, for the single task it does not matter, which order two sequential independent loads should be made. So we make them reordered. Signed-off-by: Kirill Tkhai <[email protected]> Acked-by: Andrei Vagin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent cf19e5e commit 98f6c53

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

net/core/net_namespace.c

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,9 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
303303
if (error < 0)
304304
goto out_undo;
305305
}
306+
rtnl_lock();
307+
list_add_tail_rcu(&net->list, &net_namespace_list);
308+
rtnl_unlock();
306309
out:
307310
return error;
308311

@@ -424,11 +427,6 @@ struct net *copy_net_ns(unsigned long flags,
424427

425428
net->ucounts = ucounts;
426429
rv = setup_net(net, user_ns);
427-
if (rv == 0) {
428-
rtnl_lock();
429-
list_add_tail_rcu(&net->list, &net_namespace_list);
430-
rtnl_unlock();
431-
}
432430
mutex_unlock(&net_mutex);
433431
if (rv < 0) {
434432
dec_net_namespaces(ucounts);
@@ -880,11 +878,6 @@ static int __init net_ns_init(void)
880878
panic("Could not setup the initial network namespace");
881879

882880
init_net_initialized = true;
883-
884-
rtnl_lock();
885-
list_add_tail_rcu(&init_net.list, &net_namespace_list);
886-
rtnl_unlock();
887-
888881
mutex_unlock(&net_mutex);
889882

890883
register_pernet_subsys(&net_ns_ops);

0 commit comments

Comments
 (0)