Applied, thanks. Serge E. Hallyn wrote: > when doing a self-restart, we can't search for ourselves on our > list of children... > > Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx> > --- > checkpoint/restart.c | 32 +++++++++++++++++++++++--------- > 1 files changed, 23 insertions(+), 9 deletions(-) > > diff --git a/checkpoint/restart.c b/checkpoint/restart.c > index b87d0e1..13f48fb 100644 > --- a/checkpoint/restart.c > +++ b/checkpoint/restart.c > @@ -569,16 +569,16 @@ static int wait_all_tasks_finish(struct ckpt_ctx *ctx) > return ret; > } > > -/* setup restart-specific parts of ctx */ > -static int init_restart_ctx(struct ckpt_ctx *ctx, pid_t pid) > +static struct task_struct *choose_root_task(struct ckpt_ctx *ctx, pid_t pid) > { > - struct task_struct *task; > - struct nsproxy *nsproxy; > + struct task_struct *task = current; > > - /* > - * No need for explicit cleanup here, because if an error > - * occurs then ckpt_ctx_free() is eventually called. > - */ > + if (ctx->uflags & RESTART_TASKSELF) { > + ctx->root_pid = pid; > + ctx->root_task = task; > + get_task_struct(current); > + return current; > + } > > read_lock(&tasklist_lock); > list_for_each_entry(task, ¤t->children, sibling) { > @@ -590,11 +590,25 @@ static int init_restart_ctx(struct ckpt_ctx *ctx, pid_t pid) > } > } > read_unlock(&tasklist_lock); > + return task; > +} > + > +/* setup restart-specific parts of ctx */ > +static int init_restart_ctx(struct ckpt_ctx *ctx, pid_t pid) > +{ > + struct nsproxy *nsproxy; > + > + /* > + * No need for explicit cleanup here, because if an error > + * occurs then ckpt_ctx_free() is eventually called. > + */ > + > + ctx->root_task = choose_root_task(ctx, pid); > if (!ctx->root_task) > return -ESRCH; > > rcu_read_lock(); > - nsproxy = task_nsproxy(task); > + nsproxy = task_nsproxy(ctx->root_task); > if (nsproxy) { > get_nsproxy(nsproxy); > ctx->root_nsproxy = nsproxy; _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers