[PATCH 3/3] pidns: Make killed children autoreap

From: Eric W. Biederman
Date: Sun May 06 2012 - 20:35:50 EST



Force SIGCHLD handling to SIG_IGN so that signals are not generated
and so that the children autoreap. This increases the parallelize
and in general the speed of network namespace shutdown.

Note self reaping childrean can exist past zap_pid_ns_processess but
they will all be reaped before we allow the pid namespace init task
with pid == 1 to be reaped.

Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx>
---
kernel/pid_namespace.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c
index 57bc1fd..b98b0ed 100644
--- a/kernel/pid_namespace.c
+++ b/kernel/pid_namespace.c
@@ -149,7 +149,12 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
{
int nr;
int rc;
- struct task_struct *task;
+ struct task_struct *task, *me = current;
+
+ /* Ignore SIGCHLD causing any terminated children to autoreap */
+ spin_lock_irq(&me->sighand->siglock);
+ me->sighand->action[SIGCHLD -1].sa.sa_handler = SIG_IGN;
+ spin_unlock_irq(&me->sighand->siglock);

/*
* The last thread in the cgroup-init thread group is terminating.
--
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/