Messages in this thread Patch in this message | | | Date | Tue, 10 Sep 2013 16:01:40 +0200 | From | Oleg Nesterov <> | Subject | [PATCH 1/1] pidns: fix free_pid() to handle the first fork failure |
| |
"case 0" in free_pid() assumes that disable_pid_allocation() should clear PIDNS_HASH_ADDING before the last pid goes away. However this doesn't happen if the 1st fork() fails to create the child reaper which should call disable_pid_allocation().
Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- kernel/pid.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/kernel/pid.c b/kernel/pid.c index 66505c1..606a212 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -272,6 +272,11 @@ void free_pid(struct pid *pid) */ wake_up_process(ns->child_reaper); break; + case PIDNS_HASH_ADDING: + /* Handle a fork failure of the first process */ + WARN_ON(ns->child_reaper); + ns->nr_hashed = 0; + /* fall through */ case 0: schedule_work(&ns->proc_work); break; -- 1.5.5.1
| |