lkml.org 
[lkml]   [2009]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/38] netns 2/2: extract net_create()
    Date
    net_create() will be used by C/R to create fresh netns on restart.

    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Acked-by: Serge Hallyn <serue@us.ibm.com>
    ---
    net/core/net_namespace.c | 44 ++++++++++++++++++++------------------------
    1 files changed, 20 insertions(+), 24 deletions(-)

    diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
    index 4488010..6b3edc9 100644
    --- a/net/core/net_namespace.c
    +++ b/net/core/net_namespace.c
    @@ -115,38 +115,34 @@ static void net_free(struct net *net)
    kmem_cache_free(net_cachep, net);
    }

    -struct net *copy_net_ns(unsigned long flags, struct net *old_net)
    +static struct net *net_create(void)
    {
    - struct net *new_net = NULL;
    - int err;
    -
    - if (!(flags & CLONE_NEWNET))
    - return get_net(old_net);
    -
    - err = -ENOMEM;
    - new_net = net_alloc();
    - if (!new_net)
    - goto out_err;
    + struct net *net;
    + int rv;

    + net = net_alloc();
    + if (!net)
    + return ERR_PTR(-ENOMEM);
    mutex_lock(&net_mutex);
    - err = setup_net(new_net);
    - if (!err) {
    + rv = setup_net(net);
    + if (rv == 0) {
    rtnl_lock();
    - list_add_tail(&new_net->list, &net_namespace_list);
    + list_add_tail(&net->list, &net_namespace_list);
    rtnl_unlock();
    }
    mutex_unlock(&net_mutex);
    + if (rv < 0) {
    + net_free(net);
    + return ERR_PTR(rv);
    + }
    + return net;
    +}

    - if (err)
    - goto out_free;
    -out:
    - return new_net;
    -
    -out_free:
    - net_free(new_net);
    -out_err:
    - new_net = ERR_PTR(err);
    - goto out;
    +struct net *copy_net_ns(unsigned long flags, struct net *old_net)
    +{
    + if (!(flags & CLONE_NEWNET))
    + return get_net(old_net);
    + return net_create();
    }

    static void cleanup_net(struct work_struct *work)
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2009-05-22 07:03    [W:0.021 / U:28.800 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site