diff options
author | Eric W. Biederman <ebiederm@aristanetworks.com> | 2009-02-22 00:11:09 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-22 19:54:50 -0800 |
commit | ce16c5337ab0d165f95c88aa857207efd7c01139 (patch) | |
tree | 23f62e2361b43ac56eabe4f9f2e1ea11013fa740 /net/core | |
parent | 6a1b3054d9fd98001a6631501caf1969138ee00d (diff) | |
download | linux-3.10-ce16c5337ab0d165f95c88aa857207efd7c01139.tar.gz linux-3.10-ce16c5337ab0d165f95c88aa857207efd7c01139.tar.bz2 linux-3.10-ce16c5337ab0d165f95c88aa857207efd7c01139.zip |
netns: Remove net_alive
It turns out that net_alive is unnecessary, and the original problem
that led to it being added was simply that the icmp code thought
it was a network device and wound up being unable to handle packets
while there were still packets in the network namespace.
Now that icmp and tcp have been fixed to properly register themselves
this problem is no longer present and we have a stronger guarantee
that packets will not arrive in a network namespace then that provided
by net_alive in netif_receive_skb. So remove net_alive allowing
packet reception run a little faster.
Additionally document the strong reason why network namespace cleanup
is safe so that if something happens again someone else will have
a chance of figuring it out.
Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 6 | ||||
-rw-r--r-- | net/core/net_namespace.c | 3 |
2 files changed, 0 insertions, 9 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 88dc082b47d..ac6ab12d329 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2254,12 +2254,6 @@ int netif_receive_skb(struct sk_buff *skb) rcu_read_lock(); - /* Don't receive packets in an exiting network namespace */ - if (!net_alive(dev_net(skb->dev))) { - kfree_skb(skb); - goto out; - } - #ifdef CONFIG_NET_CLS_ACT if (skb->tc_verd & TC_NCLS) { skb->tc_verd = CLR_TC_NCLS(skb->tc_verd); diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 55151faaf90..516c7b15432 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -140,9 +140,6 @@ static void cleanup_net(struct work_struct *work) struct pernet_operations *ops; struct net *net; - /* Be very certain incoming network packets will not find us */ - rcu_barrier(); - net = container_of(work, struct net, work); mutex_lock(&net_mutex); |