[Devel] [PATCH][cr]: Ghost tasks must not be detached in kernel
Sukadev Bhattiprolu
sukadev at linux.vnet.ibm.com
Fri Dec 10 19:33:15 PST 2010
Oren,
As discussed (a while ago)
https://lists.linux-foundation.org/pipermail/containers/2010-November/025905.html
here is a patch. I will send a follow-on user-cr patch to mark
the task detached in user-space.
---
From: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Date: Fri, 10 Dec 2010 18:37:17 -0800
Subject: [PATCH 1/1] Ghost tasks must not be detached in kernel
Ghost tasks are "temporary" tasks created during sys_restart() to
restore "orphaned" sessions/process groups (i.e. those in which the
original session/pgrp leader had exited before checkpoint but other
processes exist in that session/pgrp).
We only create the ghost task so we have a valid session/pgrp that
the other processes in the session/pgrp can use. Once those other
processes are created, the ghost tasks must silently vanish (without
sending another SIGCHLD).
do_ghost_task() was setting the exit_signal to -1 so the ghosts don't
send a signal. But rather than set the ->exit_signal here, the caller
(i.e user-space) can create the ghost task by explicitly setting the
CSIGNAL mask to 0xFF. i.e it is not something the we need to do in the
kernel.
The downside of marking the task detached in do_ghost_task() is that
with current/older kernels container-init does not wait for detached
tasks. See:
http://lkml.org/lkml/2010/6/16/272
http://lkml.org/lkml/2010/7/12/213
This can lead to a kernel crash if the container-init pre-deceases a
ghost task.
Signed-off-by: Sukadev Bhattiprolu (sukadev at us.ibm.com)
---
kernel/checkpoint/restart.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/kernel/checkpoint/restart.c b/kernel/checkpoint/restart.c
index 17270b8..2bb7197 100644
--- a/kernel/checkpoint/restart.c
+++ b/kernel/checkpoint/restart.c
@@ -972,7 +972,6 @@ static int do_ghost_task(void)
if (ret < 0)
ckpt_err(ctx, ret, "ghost restart failed\n");
- current->exit_signal = -1;
restore_debug_exit(ctx);
ckpt_ctx_put(ctx);
do_exit(0);
--
1.6.0.4
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list