All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Schillstrom <hans@schillstrom.com>
To: netdev@vger.kernel.org, Daniel Lezcano <daniel.lezcano@free.fr>,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Race condition when creating multiple namespaces?
Date: Mon, 11 Apr 2011 23:01:46 +0200	[thread overview]
Message-ID: <201104112301.46776.hans@schillstrom.com> (raw)

Hello
I'v been strugling with this for some time now

When creating multiple namespaces using lxc-start,  un-initialized network namespace parts will be called by the new process in the namespace.
ex. when using conntrack or ipvsadm to quickly,  (a sleep 2 "solves" the problem).
(From what I can see syscall clone() is used in lx-start  i.e. do_fork will be called later on.)
Actually I was debugging ip_vs when closing multiple ns  when I fell into this one.

I have a loop that create 33 containers whith lxc-start ... -- test.sh
the first thing the new conatiner does in test.sh is
#!/bin/bash
iptables -t mangle -A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j CONNMARK --restore-mark
nc -l -p1234

This results in NULL ptr in ip_conntrack_net_init(struct *net)

and in anoither test test.sh looks like this
#!/bin/bash
ipvsadm --start-daemon=master --mcast-interface=lo
nc -l -p1234

And this results in an uniitialized spinlock in ip_vs_sync

I put a printk in nsproxy: copy_namespaces() and could see a dozens of them
before anything appears from ipvs or conntrack.

My feeling is that when you start up user processes in a new name space, 
all kernel related init should have been done (you should not need to add a sleep to get it working)

All test  made by using todays net-next-2.6 (2.6.39-rc1)

Note:
That neither conntrack or ip_vs modules where loaded,
if modules where loaded before creating new namespaces it all works...

Finally the question,
Should it really work to load modules within a namespace , 
that is a part of netns ?

-- 
Mvh
Hasse Schillstrom
070-699 7150

             reply	other threads:[~2011-04-11 21:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-11 21:01 Hans Schillstrom [this message]
2011-04-12  0:27 ` Race condition when creating multiple namespaces? Eric W. Biederman
2011-04-12  4:56   ` Hans Schillstrom
2011-04-14 20:46   ` Hans Schillstrom

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201104112301.46776.hans@schillstrom.com \
    --to=hans@schillstrom.com \
    --cc=daniel.lezcano@free.fr \
    --cc=ebiederm@xmission.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.