Re: That's pretty much it for 3.5.0
From: John Fastabend <hidden>
Date: 2012-07-17 22:13:37
Also in:
netdev, netfilter-devel
On 7/17/2012 2:02 PM, David Miller wrote:
From: John Fastabend <redacted> Date: Tue, 17 Jul 2012 13:50:16 -0700quoted
On 7/17/2012 12:24 PM, David Miller wrote:quoted
From: John Fastabend <redacted> Date: Tue, 17 Jul 2012 12:09:53 -0700quoted
although we don't have an early_init hook for netprio_cgroup so this is probably not correct.The dependency is actually on net_dev_init (a subsys_initcall) rather than a pure_initcall. net_dev_init is what registers the netdev_net_ops, which in turn initializes the netdev list in namespaces such as &init_netAh right thanks sorry for the thrash. I guess we need to check if the netdev list in the init_net namespace is initialized.It's a hack, but we could export and then test dev_boot_phase == 0, and if that test is true then skip the init_net device walk in the cgroup code. But I don't like that very much. The things this code cares about can't even be an issue until net_dev_init() runs. There is a comment warning not to do this in linux/init.h, but we could change the module_init() in netprio_cgroup.c to some level which runs after subsys_inticall(). When built as a module, linux/init.h will translate this into module_init() which is basically the behavior we want.
Perhaps the easiest way is to check net->count this should be zero until setup_net is called. if (!atomic_read(&init_net.count)) return ret;