2009-04-10 02:35:23

by Alexey Dobriyan

[permalink] [raw]
Subject: [PATCH 06/30] netns: don't get/put old netns on CLONE_NEWNET

copy_net_ns() doesn't copy anything, it creates fresh netns,
so get/put of old netns is unneeded.

Signed-off-by: Alexey Dobriyan <[email protected]>
---

net/core/net_namespace.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -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:


2009-04-10 22:39:21

by Serge E. Hallyn

[permalink] [raw]
Subject: Re: [PATCH 06/30] netns: don't get/put old netns on CLONE_NEWNET

Quoting Alexey Dobriyan ([email protected]):
> copy_net_ns() doesn't copy anything, it creates fresh netns,
> so get/put of old netns is unneeded.
>
> Signed-off-by: Alexey Dobriyan <[email protected]>

Acked-by: Serge Hallyn <[email protected]>

> ---
>
> net/core/net_namespace.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> --- a/net/core/net_namespace.c
> +++ b/net/core/net_namespace.c
> @@ -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: