diff -NurpP --minimal linux-2.6.14.2-vs2.1.0-rc7.4/kernel/vserver/context.c linux-2.6.14.2-vs2.1.0-rc7.5/kernel/vserver/context.c --- linux-2.6.14.2-vs2.1.0-rc7.4/kernel/vserver/context.c 2005-11-17 00:12:20 +0100 +++ linux-2.6.14.2-vs2.1.0-rc7.5/kernel/vserver/context.c 2005-11-18 15:53:55 +0100 @@ -552,10 +552,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; @@ -636,7 +634,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: @@ -830,7 +828,7 @@ int vc_set_cflags(uint32_t id, void __us trigger = (mask & vxi->vx_flags) ^ (mask & vc_data.flagword); if (trigger & VXF_STATE_SETUP) - vx_mask_bcaps(current); + vx_mask_bcaps(vxi, current); if (trigger & VXF_STATE_INIT) if (vxi == current->vx_info) vx_set_init(vxi, current);