@@ -310,35 +310,36 @@ struct net *get_net_ns_by_id(const struct net *net, int id)
310
310
EXPORT_SYMBOL_GPL (get_net_ns_by_id );
311
311
312
312
/* init code that must occur even if setup_net() is not called. */
313
- static __net_init void preinit_net (struct net * net )
313
+ static __net_init void preinit_net (struct net * net , struct user_namespace * user_ns )
314
314
{
315
315
refcount_set (& net -> passive , 1 );
316
+ refcount_set (& net -> ns .count , 1 );
317
+ ref_tracker_dir_init (& net -> refcnt_tracker , 128 , "net refcnt" );
316
318
ref_tracker_dir_init (& net -> notrefcnt_tracker , 128 , "net notrefcnt" );
319
+
320
+ get_random_bytes (& net -> hash_mix , sizeof (u32 ));
321
+ net -> dev_base_seq = 1 ;
322
+ net -> user_ns = user_ns ;
323
+
324
+ idr_init (& net -> netns_ids );
325
+ spin_lock_init (& net -> nsid_lock );
326
+ mutex_init (& net -> ipv4 .ra_mutex );
317
327
}
318
328
319
329
/*
320
330
* setup_net runs the initializers for the network namespace object.
321
331
*/
322
- static __net_init int setup_net (struct net * net , struct user_namespace * user_ns )
332
+ static __net_init int setup_net (struct net * net )
323
333
{
324
334
/* Must be called with pernet_ops_rwsem held */
325
335
const struct pernet_operations * ops , * saved_ops ;
326
336
LIST_HEAD (net_exit_list );
327
337
LIST_HEAD (dev_kill_list );
328
338
int error = 0 ;
329
339
330
- refcount_set (& net -> ns .count , 1 );
331
- ref_tracker_dir_init (& net -> refcnt_tracker , 128 , "net refcnt" );
332
-
333
- get_random_bytes (& net -> hash_mix , sizeof (u32 ));
334
340
preempt_disable ();
335
341
net -> net_cookie = gen_cookie_next (& net_cookie );
336
342
preempt_enable ();
337
- net -> dev_base_seq = 1 ;
338
- net -> user_ns = user_ns ;
339
- idr_init (& net -> netns_ids );
340
- spin_lock_init (& net -> nsid_lock );
341
- mutex_init (& net -> ipv4 .ra_mutex );
342
343
343
344
list_for_each_entry (ops , & pernet_list , list ) {
344
345
error = ops_init (ops , net );
@@ -497,15 +498,15 @@ struct net *copy_net_ns(unsigned long flags,
497
498
goto dec_ucounts ;
498
499
}
499
500
500
- preinit_net (net );
501
+ preinit_net (net , user_ns );
501
502
net -> ucounts = ucounts ;
502
503
get_user_ns (user_ns );
503
504
504
505
rv = down_read_killable (& pernet_ops_rwsem );
505
506
if (rv < 0 )
506
507
goto put_userns ;
507
508
508
- rv = setup_net (net , user_ns );
509
+ rv = setup_net (net );
509
510
510
511
up_read (& pernet_ops_rwsem );
511
512
@@ -1199,10 +1200,10 @@ void __init net_ns_init(void)
1199
1200
#ifdef CONFIG_KEYS
1200
1201
init_net .key_domain = & init_net_key_domain ;
1201
1202
#endif
1202
- preinit_net (& init_net );
1203
+ preinit_net (& init_net , & init_user_ns );
1203
1204
1204
1205
down_write (& pernet_ops_rwsem );
1205
- if (setup_net (& init_net , & init_user_ns ))
1206
+ if (setup_net (& init_net ))
1206
1207
panic ("Could not setup the initial network namespace" );
1207
1208
1208
1209
init_net_initialized = true;
0 commit comments