@@ -409,7 +409,7 @@ static __net_init int preinit_net(struct net *net, struct user_namespace *user_n
409409 ns_ops = NULL ;
410410#endif
411411
412- ret = ns_common_init (& net -> ns , ns_ops , false );
412+ ret = ns_common_init (& net -> ns , ns_ops , true );
413413 if (ret )
414414 return ret ;
415415
@@ -590,6 +590,7 @@ struct net *copy_net_ns(unsigned long flags,
590590
591591 if (rv < 0 ) {
592592put_userns :
593+ ns_free_inum (& net -> ns );
593594#ifdef CONFIG_KEYS
594595 key_remove_domain (net -> key_domain );
595596#endif
@@ -712,6 +713,7 @@ static void cleanup_net(struct work_struct *work)
712713 /* Finally it is safe to free my network namespace structure */
713714 list_for_each_entry_safe (net , tmp , & net_exit_list , exit_list ) {
714715 list_del_init (& net -> exit_list );
716+ ns_free_inum (& net -> ns );
715717 dec_net_namespaces (net -> ucounts );
716718#ifdef CONFIG_KEYS
717719 key_remove_domain (net -> key_domain );
@@ -831,31 +833,12 @@ static void net_ns_net_debugfs(struct net *net)
831833
832834static __net_init int net_ns_net_init (struct net * net )
833835{
834- int ret = 0 ;
835-
836- if (net == & init_net )
837- net -> ns .inum = PROC_NET_INIT_INO ;
838- else
839- ret = proc_alloc_inum (& to_ns_common (net )-> inum );
840- if (ret )
841- return ret ;
842-
843836 net_ns_net_debugfs (net );
844837 return 0 ;
845838}
846839
847- static __net_exit void net_ns_net_exit (struct net * net )
848- {
849- /*
850- * Initial network namespace doesn't exit so we don't need any
851- * special checks here.
852- */
853- ns_free_inum (& net -> ns );
854- }
855-
856840static struct pernet_operations __net_initdata net_ns_ops = {
857841 .init = net_ns_net_init ,
858- .exit = net_ns_net_exit ,
859842};
860843
861844static const struct nla_policy rtnl_net_policy [NETNSA_MAX + 1 ] = {
0 commit comments