diff -NurpP --minimal linux-2.6.17.7-vs2.1.1-rc27.1/kernel/vserver/context.c linux-2.6.17.7-vs2.1.1-rc27.2/kernel/vserver/context.c --- linux-2.6.17.7-vs2.1.1-rc27.1/kernel/vserver/context.c 2006-07-10 01:38:49 +0200 +++ linux-2.6.17.7-vs2.1.1-rc27.2/kernel/vserver/context.c 2006-07-30 02:54:33 +0200 @@ -847,16 +847,21 @@ int vc_ctx_create(uint32_t xid, void __u int vc_ctx_migrate(struct vx_info *vxi, void __user *data) { struct vcmd_ctx_migrate vc_data = { .flagword = 0 }; + int ret; if (data && copy_from_user (&vc_data, data, sizeof(vc_data))) return -EFAULT; - vx_migrate_task(current, vxi); + ret = vx_migrate_task(current, vxi); + if (ret) + return ret; if (vc_data.flagword & VXM_SET_INIT) - vx_set_init(vxi, current); + ret = vx_set_init(vxi, current); + if (ret) + return ret; if (vc_data.flagword & VXM_SET_REAPER) - vx_set_reaper(vxi, current); - return 0; + ret = vx_set_reaper(vxi, current); + return ret; } @@ -890,8 +895,14 @@ int vc_set_cflags(struct vx_info *vxi, v if (trigger & VXF_STATE_SETUP) vx_mask_cap_bset(vxi, current); if (trigger & VXF_STATE_INIT) { - vx_set_init(vxi, current); - vx_set_reaper(vxi, current); + int ret; + + ret = vx_set_init(vxi, current); + if (ret) + return ret; + ret = vx_set_reaper(vxi, current); + if (ret) + return ret; } } diff -NurpP --minimal linux-2.6.17.7-vs2.1.1-rc27.1/kernel/vserver/switch.c linux-2.6.17.7-vs2.1.1-rc27.2/kernel/vserver/switch.c --- linux-2.6.17.7-vs2.1.1-rc27.1/kernel/vserver/switch.c 2006-07-10 01:39:13 +0200 +++ linux-2.6.17.7-vs2.1.1-rc27.2/kernel/vserver/switch.c 2006-07-30 02:54:33 +0200 @@ -335,7 +335,7 @@ long do_vserver(uint32_t cmd, uint32_t i VC_VERSION(cmd), id, data, compat, perm, args, flags); - ret = -EPERM; + ret = -ENOSYS; if (perm < 0) goto out;