netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [NETNS] Oops in register_pernet_operations() with CONFIG_NET_NS=n
@ 2007-10-25 12:59 Benjamin Thery
  2007-10-25 14:00 ` Denis V. Lunev
  0 siblings, 1 reply; 18+ messages in thread
From: Benjamin Thery @ 2007-10-25 12:59 UTC (permalink / raw)
  To: Pavel Emelianov
  Cc: Eric W. Biederman, David Miller, Linux Netdev List,
	Cedric Le Goater, Linux Containers, Daniel Lezcano

Hello Pavel,

I've found a problem with one of your patch related to netns:

* [NETNS] Move some code into __init section when CONFIG_NET_NS=n (v2)
   http://www.spinics.net/lists/netdev/msg43310.html

This patch introduces the __net_init/__net_exit/__net_initdata
defines to save some memory when CONFIG_NET_NS is not set.

Cedric Le Goater reported he had a *non-fatal* oops when booting
a 2.6.23-mm1-lxc1 kernel with CONFIG_NET_NS=n. (2.6.23-mm1-lxc1 
contains the NETNS49 patchset). The oops occured when modules 
related to iptables were loaded after the boot completes.

The problem is the following:

- Your patch adds the __net_initdata attribute to pernet_operations 
  structures.

- pernet_operations are registered via register_pernet_subsys() and 
  linked in the pernet_list during boot.

- At the end of boot, pernet_operations are freed (because of the
  __net_initdata attribute), and the pernet_list (or first_device list) 
  points to freed memory.

- After boot, network modules which are netns-aware try to register
  themselves with register_pernet_subsys() and ...KABOOM... page
  fault when accessing pernet_list (or first_device list).
  (I reproduce Cedric's oops with the command: iptables --list)

This is not a problem right now in 2.6.23-mm1 or net-2.6 because 
there are very few netns-aware network subsystems merged and they
are all initialized during boot. But it will be problematic when 
we will merge netns code for subsystems which can be built as 
modules (eg. iptables, ...). I'm not sure we can use 
__net_init_data for pernet_operations then. 
Maybe we can add some checks in register_pernet_operations
when CONFIG_NET_NS=n.

I haven't found a fix yet.

Regards,
Benjamin

-- 
B e n j a m i n   T h e r y  - BULL/DT/Open Software R&D

   http://www.bull.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2007-10-27  7:29 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-25 12:59 [NETNS] Oops in register_pernet_operations() with CONFIG_NET_NS=n Benjamin Thery
2007-10-25 14:00 ` Denis V. Lunev
2007-10-25 14:14   ` [Devel] Re: [NETNS] Oops in register_pernet_operations() with CONFIG_NET_NS=n (resend, was wrong patch) Denis V. Lunev
2007-10-25 14:50   ` [NETNS] Oops in register_pernet_operations() with CONFIG_NET_NS=n Benjamin Thery
2007-10-25 15:04     ` Eric W. Biederman
2007-10-25 15:10       ` Benjamin Thery
2007-10-25 16:39         ` Eric W. Biederman
2007-10-25 16:52           ` Denis V. Lunev
2007-10-25 17:21             ` Eric W. Biederman
2007-10-26 11:31               ` David Miller
2007-10-26 11:41                 ` Benjamin Thery
2007-10-26 11:55                   ` David Miller
2007-10-26 23:40                     ` Eric W. Biederman
2007-10-26 23:45                     ` [PATCH] net: Marking struct pernet_operations __net_initdata was inappropriate Eric W. Biederman
2007-10-27  5:55                       ` David Miller
2007-10-27  6:07                         ` Eric W. Biederman
2007-10-27  7:29                           ` David Miller
2007-10-25 15:03   ` [NETNS] Oops in register_pernet_operations() with CONFIG_NET_NS=n Eric W. Biederman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).