Signed-off-by: Oren Laadan <orenl@xxxxxxxxxxxxxxx> --- restart.c | 29 +++++++++++++++++------------ 1 files changed, 17 insertions(+), 12 deletions(-) diff --git a/restart.c b/restart.c index d813269..b281ca2 100644 --- a/restart.c +++ b/restart.c @@ -1780,14 +1780,10 @@ static pid_t ckpt_fork_child(struct ckpt_ctx *ctx, struct task *child) flags |= CLONE_NEWPID; } if (flags & CLONE_NEWPID && !ctx->args->pidns) { - ckpt_err("Must use --pidns for nested pidns container"); + ckpt_err("need --pidns for nested pidns container"); errno = -EINVAL; return -1; } -#if 0 - if (flags & CLONE_NEWPID) - clone_args.nr_pids--; -#endif #endif /* CLONE_NEWPID */ } @@ -2375,17 +2371,26 @@ static int ckpt_read_vpids(struct ckpt_ctx *ctx) { int i, len, ret; - for (i = 0; i < ctx->pids_nr; i++) - ctx->vpids_nr += ctx->pids_arr[i].depth; + for (i = 0; i < ctx->pids_nr; i++) { + if (ctx->pids_arr[i].depth < 0) { + ckpt_err("Invalid depth %d for pid %d", + ctx->pids_arr[i].depth, + ctx->tasks_arr[i].pid); + errno = -EINVAL; + return -1; + } - ckpt_dbg("number of vpids: %d\n", ctx->vpids_nr); + ctx->vpids_nr += ctx->pids_arr[i].depth; - if (ctx->vpids_nr < 0) { - ckpt_err("Invalid number of vpids %d", ctx->vpids_nr); - errno = -EINVAL; - return -1; + if(ctx->vpids_nr < 0) { + ckpt_err("Number of vpids overflowed"); + errno = -E2BIG; + return -1; + } } + ckpt_dbg("number of vpids: %d\n", ctx->vpids_nr); + if (!ctx->vpids_nr) return 0; -- 1.7.0.4 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers