summaryrefslogtreecommitdiff
path: root/net/core
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@aristanetworks.com>2009-02-22 00:11:09 -0800
committerDavid S. Miller <davem@davemloft.net>2009-02-22 19:54:50 -0800
commitce16c5337ab0d165f95c88aa857207efd7c01139 (patch)
tree23f62e2361b43ac56eabe4f9f2e1ea11013fa740 /net/core
parent6a1b3054d9fd98001a6631501caf1969138ee00d (diff)
downloadlinux-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.c6
-rw-r--r--net/core/net_namespace.c3
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);