#include <linux/config.h>
#include <linux/sched.h>
-#include <linux/vs_context.h>
-#include <linux/vs_network.h>
+#include <linux/namespace.h>
#include <linux/vserver/legacy.h>
#include <linux/vserver/namespace.h>
-#include <linux/namespace.h>
+#include <linux/vserver.h>
+#include <linux/vs_base.h>
+#include <linux/vs_context.h>
+#include <linux/vs_network.h>
#include <asm/errno.h>
#include <asm/uaccess.h>
return ret;
}
- if (!vx_check(0, VX_ADMIN) || !capable(CAP_SYS_ADMIN)
- /* might make sense in the future, or not ... */
- || vx_flags(VX_INFO_LOCK, 0))
+ if (!vx_check(0, VX_ADMIN) ||
+ !capable(CAP_SYS_ADMIN) || vx_flags(VX_INFO_PRIVATE, 0))
return -EPERM;
/* ugly hack for Spectator */
if (!new_vxi)
return -EINVAL;
-
- ret = -EPERM;
- if (!vx_info_flags(new_vxi, VXF_STATE_SETUP, 0) &&
- vx_info_flags(new_vxi, VX_INFO_PRIVATE, 0))
- goto out_put;
-
new_vxi->vx_flags &= ~(VXF_STATE_SETUP|VXF_STATE_INIT);
ret = vx_migrate_task(current, new_vxi);
current->namespace, current->fs);
if (vc_data.flags & VX_INFO_NPROC)
new_vxi->limit.rlim[RLIMIT_NPROC] =
- current->signal->rlim[RLIMIT_NPROC].rlim_max;
+ current->rlim[RLIMIT_NPROC].rlim_max;
ret = new_vxi->vx_id;
}
-out_put:
put_vx_info(new_vxi);
return ret;
}