]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/core/net_namespace.c
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / net / core / net_namespace.c
index 763674e1e593082e7cdcf694af7301ba1a34ecfc..7c52fe277b62441966f758b25fad9acef18a10d0 100644 (file)
@@ -35,7 +35,9 @@ static __net_init int setup_net(struct net *net)
        struct net_generic *ng;
 
        atomic_set(&net->count, 1);
+#ifdef NETNS_REFCNT_DEBUG
        atomic_set(&net->use_count, 0);
+#endif
 
        error = -ENOMEM;
        ng = kzalloc(sizeof(struct net_generic) +
@@ -86,11 +88,13 @@ static void net_free(struct net *net)
        if (!net)
                return;
 
+#ifdef NETNS_REFCNT_DEBUG
        if (unlikely(atomic_read(&net->use_count) != 0)) {
                printk(KERN_EMERG "network namespace not free! Usage: %d\n",
                        atomic_read(&net->use_count));
                return;
        }
+#endif
 
        kmem_cache_free(net_cachep, net);
 }
@@ -136,6 +140,9 @@ 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);