Thread (10 messages) flat view 10 messages, 3 authors, 2012-07-17

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 -0700
quoted
On 7/17/2012 12:24 PM, David Miller wrote:
quoted
From: John Fastabend <redacted>
Date: Tue, 17 Jul 2012 12:09:53 -0700
quoted
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_net
Ah 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;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help