diff -NurpP linux-2.6.17.7-vs2.1.1-rc28.1.2/kernel/vserver/signal.c linux-2.6.17.7-vs2.1.1-rc28.1.3/kernel/vserver/signal.c --- linux-2.6.17.7-vs2.1.1-rc28.1.2/kernel/vserver/signal.c 2006-07-30 03:19:01 +0200 +++ linux-2.6.17.7-vs2.1.1-rc28.1.3/kernel/vserver/signal.c 2006-08-06 20:14:14 +0200 @@ -78,7 +78,10 @@ int vc_ctx_kill(struct vx_info *vxi, voi return -EFAULT; /* special check to allow guest shutdown */ - if (!vx_info_flags(vxi, VXF_STATE_ADMIN, 0) && (vc_data.pid != 1)) + if (!vx_info_flags(vxi, VXF_STATE_ADMIN, 0) && + /* forbid killall pid=0 when init is present */ + (((vc_data.pid < 1) && vxi->vx_initpid) || + (vc_data.pid > 1))) return -EACCES; return vx_info_kill(vxi, vc_data.pid, vc_data.sig); diff -NurpP linux-2.6.17.7-vs2.1.1-rc28.1.2/kernel/vserver/switch.c linux-2.6.17.7-vs2.1.1-rc28.1.3/kernel/vserver/switch.c --- linux-2.6.17.7-vs2.1.1-rc28.1.2/kernel/vserver/switch.c 2006-07-30 16:51:10 +0200 +++ linux-2.6.17.7-vs2.1.1-rc28.1.3/kernel/vserver/switch.c 2006-08-06 20:18:06 +0200 @@ -276,7 +276,7 @@ long do_vserver(uint32_t cmd, uint32_t i __VCMD(get_dlimit, 3, VCA_NONE, VCF_INFO); /* lower admin commands */ - __VCMD(wait_exit, 4, VCA_VXI, VCF_ADMIN); + __VCMD(wait_exit, 4, VCA_VXI, VCF_INFO); __VCMD(ctx_create_v0, 5, VCA_NONE, 0); __VCMD(ctx_create, 5, VCA_NONE, 0); __VCMD(ctx_migrate_v0, 5, VCA_VXI, VCF_ADMIN);