diff options
author | Sukadev Bhattiprolu <sukadev@us.ibm.com> | 2006-12-08 05:38:01 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-08 11:28:52 -0500 |
commit | 84d737866e2babdeab0c6b18ea155c6a649663b8 (patch) | |
tree | e504da826174c2804d8c680828800aa680090686 /include/linux/pid_namespace.h | |
parent | 6cc1b22a4acef3816eaa5f8c227d93d749b23195 (diff) |
[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 'include/linux/pid_namespace.h')
-rw-r--r-- | include/linux/pid_namespace.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h index 76e7c6b2cf33..d2a9d419f01f 100644 --- a/include/linux/pid_namespace.h +++ b/include/linux/pid_namespace.h | |||
@@ -19,6 +19,7 @@ struct pid_namespace { | |||
19 | struct kref kref; | 19 | struct kref kref; |
20 | struct pidmap pidmap[PIDMAP_ENTRIES]; | 20 | struct pidmap pidmap[PIDMAP_ENTRIES]; |
21 | int last_pid; | 21 | int last_pid; |
22 | struct task_struct *child_reaper; | ||
22 | }; | 23 | }; |
23 | 24 | ||
24 | extern struct pid_namespace init_pid_ns; | 25 | extern struct pid_namespace init_pid_ns; |
@@ -36,4 +37,9 @@ static inline void put_pid_ns(struct pid_namespace *ns) | |||
36 | kref_put(&ns->kref, free_pid_ns); | 37 | kref_put(&ns->kref, free_pid_ns); |
37 | } | 38 | } |
38 | 39 | ||
40 | static inline struct task_struct *child_reaper(struct task_struct *tsk) | ||
41 | { | ||
42 | return tsk->nsproxy->pid_ns->child_reaper; | ||
43 | } | ||
44 | |||
39 | #endif /* _LINUX_PID_NS_H */ | 45 | #endif /* _LINUX_PID_NS_H */ |