Line up destructors actions in the revers order
to constructors. Next patches will add more actions,
and this will be comfortable, if there is the such
order.

Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 net/core/net_namespace.c |   20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 7ecf71050ffa..2e512965bf42 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -404,27 +404,25 @@ struct net *copy_net_ns(unsigned long flags,
 
        net = net_alloc();
        if (!net) {
-               dec_net_namespaces(ucounts);
-               return ERR_PTR(-ENOMEM);
+               rv = -ENOMEM;
+               goto dec_ucounts;
        }
-
+       refcount_set(&net->passive, 1);
+       net->ucounts = ucounts;
        get_user_ns(user_ns);
 
        rv = mutex_lock_killable(&net_mutex);
-       if (rv < 0) {
-               net_free(net);
-               dec_net_namespaces(ucounts);
-               put_user_ns(user_ns);
-               return ERR_PTR(rv);
-       }
+       if (rv < 0)
+               goto put_userns;
 
-       net->ucounts = ucounts;
        rv = setup_net(net, user_ns);
        mutex_unlock(&net_mutex);
        if (rv < 0) {
-               dec_net_namespaces(ucounts);
+put_userns:
                put_user_ns(user_ns);
                net_drop_ns(net);
+dec_ucounts:
+               dec_net_namespaces(ucounts);
                return ERR_PTR(rv);
        }
        return net;

Reply via email to