netns 1/2: don't get/put old netns on CLONE_NEWNET
authorAlexey Dobriyan <adobriyan@gmail.com>
Mon, 4 May 2009 18:11:38 +0000 (11:11 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 May 2009 18:11:38 +0000 (11:11 -0700)
copy_net_ns() doesn't copy anything, it creates fresh netns, so
get/put of old netns isn't needed.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/net_namespace.c

index e3bebd36f053ef5ad656b7ea81fa1a03e0c2dc74..4488010d5a52e04b274be1a947c979fcb2b8dadd 100644 (file)
@@ -120,10 +120,8 @@ struct net *copy_net_ns(unsigned long flags, struct net *old_net)
        struct net *new_net = NULL;
        int err;
 
-       get_net(old_net);
-
        if (!(flags & CLONE_NEWNET))
-               return old_net;
+               return get_net(old_net);
 
        err = -ENOMEM;
        new_net = net_alloc();
@@ -142,7 +140,6 @@ struct net *copy_net_ns(unsigned long flags, struct net *old_net)
        if (err)
                goto out_free;
 out:
-       put_net(old_net);
        return new_net;
 
 out_free: