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:
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: