X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=kernel%2Fvserver%2Fswitch.c;h=f72cb7eadcbe6bf93a66ef30660e5a6393a7e7e1;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=f13ee97a9de7be55bc009384781e08535b7e013b;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/kernel/vserver/switch.c b/kernel/vserver/switch.c index f13ee97a9..f72cb7ead 100644 --- a/kernel/vserver/switch.c +++ b/kernel/vserver/switch.c @@ -42,6 +42,8 @@ vc_get_version(uint32_t id) extern asmlinkage long sys_vserver(uint32_t cmd, uint32_t id, void __user *data) { + if (!capable(CAP_CONTEXT)) + return -EPERM; vxdprintk(VXD_CBIT(switch, 0), "vc: VCMD_%02d_%d[%d], %d", @@ -52,7 +54,7 @@ sys_vserver(uint32_t cmd, uint32_t id, void __user *data) case VCMD_get_version: return vc_get_version(id); -#ifdef CONFIG_VSERVER_LEGACY +#ifdef CONFIG_VSERVER_LEGACY case VCMD_new_s_context: return vc_new_s_context(id, data); case VCMD_set_ipv4root: @@ -96,7 +98,7 @@ sys_vserver(uint32_t cmd, uint32_t id, void __user *data) return vc_set_rlimit(id, data); case VCMD_get_rlimit_mask: return vc_get_rlimit_mask(id, data); - + case VCMD_vx_get_vhi_name: return vc_get_vhi_name(id, data); case VCMD_vx_set_vhi_name: @@ -122,6 +124,9 @@ sys_vserver(uint32_t cmd, uint32_t id, void __user *data) case VCMD_get_ncaps: return vc_get_ncaps(id, data); + case VCMD_set_sched_v2: + return vc_set_sched_v2(id, data); + /* this is version 3 */ case VCMD_set_sched: return vc_set_sched(id, data); @@ -143,7 +148,10 @@ sys_vserver(uint32_t cmd, uint32_t id, void __user *data) case VCMD_ctx_kill: return vc_ctx_kill(id, data); -#ifdef CONFIG_VSERVER_LEGACY + case VCMD_wait_exit: + return vc_wait_exit(id, data); + +#ifdef CONFIG_VSERVER_LEGACY case VCMD_create_context: return vc_ctx_create(id, data); #endif @@ -157,7 +165,7 @@ sys_vserver(uint32_t cmd, uint32_t id, void __user *data) return vc_enter_namespace(id, data); case VCMD_ctx_create: -#ifdef CONFIG_VSERVER_LEGACY +#ifdef CONFIG_VSERVER_LEGACY if (id == 1) { current->xid = 1; return 1;