diff options
author | Sukadev Bhattiprolu <sukadev@us.ibm.com> | 2006-12-08 02:38:01 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-08 08:28:52 -0800 |
commit | 84d737866e2babdeab0c6b18ea155c6a649663b8 (patch) | |
tree | e504da826174c2804d8c680828800aa680090686 /fs/exec.c | |
parent | 6cc1b22a4acef3816eaa5f8c227d93d749b23195 (diff) | |
download | linux-stable-84d737866e2babdeab0c6b18ea155c6a649663b8.tar.gz linux-stable-84d737866e2babdeab0c6b18ea155c6a649663b8.tar.bz2 linux-stable-84d737866e2babdeab0c6b18ea155c6a649663b8.zip |
[PATCH] add child reaper to pid_namespace
Add a per pid_namespace child-reaper. This is needed so processes are reaped
within the same pid space and do not spill over to the parent pid space. Its
also needed so containers preserve existing semantic that pid == 1 would reap
orphaned children.
This is based on Eric Biederman's patch: http://lkml.org/lkml/2006/2/6/285
Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Signed-off-by: Cedric Le Goater <clg@fr.ibm.com>
Cc: Kirill Korotaev <dev@openvz.org>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Herbert Poetzl <herbert@13thfloor.at>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/exec.c')
-rw-r--r-- | fs/exec.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/exec.c b/fs/exec.c index 60433e2254a4..12d8cd461b41 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -38,6 +38,7 @@ #include <linux/binfmts.h> #include <linux/swap.h> #include <linux/utsname.h> +#include <linux/pid_namespace.h> #include <linux/module.h> #include <linux/namei.h> #include <linux/proc_fs.h> @@ -620,8 +621,8 @@ static int de_thread(struct task_struct *tsk) * Reparenting needs write_lock on tasklist_lock, * so it is safe to do it under read_lock. */ - if (unlikely(tsk->group_leader == child_reaper)) - child_reaper = tsk; + if (unlikely(tsk->group_leader == child_reaper(tsk))) + tsk->nsproxy->pid_ns->child_reaper = tsk; zap_other_threads(tsk); read_unlock(&tasklist_lock); |