"Denis V. Lunev" <dlunev@xxxxxxxxx> writes: > Eric W. Biederman wrote: >> Benjamin Thery <benjamin.thery@xxxxxxxx> writes: >> >>> Eric W. Biederman wrote: >>>> Benjamin Thery <benjamin.thery@xxxxxxxx> writes: >>>> >>>>> Denis V. Lunev wrote: >>>>>> The patch attached should help. The idea is simple. The "init" should be >>>>>> called only once without NETNS. Period. No need for any lists. >>>>> This is the kind of idea I had but I didn't think it could be >>>>> that simple. :) >>>>> Thanks Denis. >>>> It isn't. > > this will work due to INIT_LIST_HEAD with circles list to itself and a > del operation will work. Suppose I have this fragment of code in a module: > static int __net_init xt_net_init(struct net *net) > { > ... > } > > static void __net_exit xt_net_exit(struct net *net) > { > ... > } > > static struct pernet_operations __net_initdata xt_net_ops = { > .init = xt_net_init, > .exit = xt_net_exit, > }; > > static int __init xt_init(void) > { > return register_pernet_subsys(&xt_net_ops); > } > > static void __exit xt_fini(void) > { > unregister_pernet_subsys(&xt_net_ops); > } > > module_init(xt_init); > module_exit(xt_fini); What happens during module removal when unregister_pernet_subys calls xt_net_ops.exit after xt_net_ops has been removed from the kernels memory? > By the way, I think that we can in the case of undefined CONFIG_NET_NS > reduce register to calling ->init method and unregister to calling > ->exit method. > > This is a correct thing at least for now and will be welcomed by the all > embedded/etc people. I'm not fundamentally opposed. Earlier versions of my patchset did that and more. However I think the pain is greater then the gain right now. Especially since this concept seem to require having quality inspected into it. Eric _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers