diff -NurpPw --minimal a/kernel/vserver/switch.c b/kernel/vserver/switch.c --- a/kernel/vserver/switch.c 2004-11-03 13:07:52.000000000 +0100 +++ b/kernel/vserver/switch.c 2004-12-01 12:01:22.155122187 +0100 @@ -42,6 +42,12 @@ vc_get_version(uint32_t id) extern asmlinkage long sys_vserver(uint32_t cmd, uint32_t id, void __user *data) { +/* evil hack, should be safe since we only allow to lower caps */ +#ifdef CONFIG_VSERVER_LEGACY + if(cmd == VCMD_new_s_context) + return vc_new_s_context(id, data); +#endif + if (!capable(CAP_CONTEXT)) return -EPERM; @@ -55,8 +61,6 @@ sys_vserver(uint32_t cmd, uint32_t id, v return vc_get_version(id); #ifdef CONFIG_VSERVER_LEGACY - case VCMD_new_s_context: - return vc_new_s_context(id, data); case VCMD_set_ipv4root: return vc_set_ipv4root(id, data); #endif