X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=kernel%2Ffork.c;h=a65d26f06437ffab97061b2bcf6dc6f0c2e12917;hb=8e8ece46a861c84343256819eaec77e608ff9217;hp=8519ee1ee2282da3f6750f0216b867e108bfdc64;hpb=a6d8dea2993ef90fb69b81372daa0b63f8aa940e;p=linux-2.6.git diff --git a/kernel/fork.c b/kernel/fork.c index 8519ee1ee..a65d26f06 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -805,6 +805,7 @@ static task_t *copy_process(unsigned long clone_flags, int retval; struct task_struct *p = NULL; struct vx_info *vxi; + struct nx_info *nxi; if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -834,8 +835,7 @@ static task_t *copy_process(unsigned long clone_flags, goto fork_out; init_vx_info(&p->vx_info, current->vx_info); - p->nx_info = NULL; - set_nx_info(&p->nx_info, current->nx_info); + init_nx_info(&p->nx_info, current->nx_info); /* check vserver memory */ if (p->mm && !(clone_flags & CLONE_VM)) { @@ -1073,6 +1073,9 @@ static task_t *copy_process(unsigned long clone_flags, atomic_inc(&vxi->cvirt.total_forks); vx_nproc_inc(p); } + nxi = p->nx_info; + if (nxi) + claim_nx_info(nxi, p); write_unlock_irq(&tasklist_lock); retval = 0;