diff -NurpP --minimal linux-2.6.16-rc5-vs2.0.2-rc10.2/include/linux/vserver/context_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10.x/include/linux/vserver/context_cmd.h --- linux-2.6.16-rc5-vs2.0.2-rc10.2/include/linux/vserver/context_cmd.h 2006-02-17 22:18:51 +0100 +++ linux-2.6.16-rc5-vs2.0.2-rc10.x/include/linux/vserver/context_cmd.h 2006-03-10 22:47:09 +0100 @@ -34,7 +34,12 @@ struct vcmd_ctx_create { uint64_t flagword; }; -#define VCMD_ctx_migrate VC_CMD(PROCMIG, 1, 0) +#define VCMD_ctx_migrate_v0 VC_CMD(PROCMIG, 1, 0) +#define VCMD_ctx_migrate VC_CMD(PROCMIG, 1, 1) + +struct vcmd_ctx_migrate { + uint64_t flagword; +}; #ifdef __KERNEL__ extern int vc_ctx_create(uint32_t, void __user *); diff -NurpP --minimal linux-2.6.16-rc5-vs2.0.2-rc10.2/kernel/vserver/switch.c linux-2.6.16-rc5-vs2.0.2-rc10.x/kernel/vserver/switch.c --- linux-2.6.16-rc5-vs2.0.2-rc10.2/kernel/vserver/switch.c 2006-02-17 22:18:51 +0100 +++ linux-2.6.16-rc5-vs2.0.2-rc10.x/kernel/vserver/switch.c 2006-03-10 22:47:09 +0100 @@ -213,6 +213,8 @@ long do_vserver(uint32_t cmd, uint32_t i return vc_ctx_create(id, NULL); case VCMD_ctx_create: return vc_ctx_create(id, data); + case VCMD_ctx_migrate_v0: + return vc_ctx_migrate(id, NULL); case VCMD_ctx_migrate: return vc_ctx_migrate(id, data); diff -NurpP --minimal linux-2.6.16-rc5-vs2.0.2-rc10.2/kernel/vserver/context.c linux-2.6.16-rc5-vs2.0.2-rc10.x/kernel/vserver/context.c --- linux-2.6.16-rc5-vs2.0.2-rc10.2/kernel/vserver/context.c 2006-02-17 22:18:51 +0100 +++ linux-2.6.16-rc5-vs2.0.2-rc10.x/kernel/vserver/context.c 2006-03-10 23:28:19 +0100 @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -486,10 +491,8 @@ int vx_migrate_user(struct task_struct * return 0; } -void vx_mask_bcaps(struct task_struct *p) +void vx_mask_bcaps(struct vx_info *vxi, struct task_struct *p) { - struct vx_info *vxi = p->vx_info; - p->cap_effective &= vxi->vx_bcaps; p->cap_inheritable &= vxi->vx_bcaps; p->cap_permitted &= vxi->vx_bcaps; @@ -571,7 +574,7 @@ int vx_migrate_task(struct task_struct * "moved task %p into vxi:%p[#%d]", p, vxi, vxi->vx_id); - vx_mask_bcaps(p); + vx_mask_bcaps(vxi, p); task_unlock(p); } out: