diff -NurpP --minimal linux-2.6.16-rc4-vs2.1.1-rc7/kernel/vserver/legacy.c linux-2.6.16-rc4-vs2.1.1-rc9.2/kernel/vserver/legacy.c --- linux-2.6.16-rc4-vs2.1.1-rc7/kernel/vserver/legacy.c 2006-02-17 23:26:33 +0100 +++ linux-2.6.16-rc4-vs2.1.1-rc9.2/kernel/vserver/legacy.c 2006-02-27 16:56:12 +0100 @@ -21,14 +21,17 @@ #include +extern int vx_set_init(struct vx_info *, struct task_struct *); static int vx_set_initpid(struct vx_info *vxi, int pid) { - if (vxi->vx_initpid) - return -EPERM; + struct task_struct *init; - vxi->vx_initpid = pid; - return 0; + init = find_task_by_real_pid(pid); + if (!init) + return -ESRCH; + + return vx_set_init(vxi, init); } int vc_new_s_context(uint32_t ctx, void __user *data)