diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2005-10-29 11:37:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-29 13:28:13 -0400 |
commit | 8d027de54c77d38eedc9b331c7a2a39807d34691 (patch) | |
tree | cfa290c7ca6b63f33b2b4624695596f38bcda2fd /kernel/signal.c | |
parent | 47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (diff) |
[PATCH] fix ->signal->live leak in copy_process()
exit_signal() (called from copy_process's error path) should decrement
->signal->live, otherwise forking process will miss 'group_dead' in
do_exit().
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index f2b96b08fb44..6904bbbfe116 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -406,6 +406,8 @@ void __exit_signal(struct task_struct *tsk) | |||
406 | 406 | ||
407 | void exit_signal(struct task_struct *tsk) | 407 | void exit_signal(struct task_struct *tsk) |
408 | { | 408 | { |
409 | atomic_dec(&tsk->signal->live); | ||
410 | |||
409 | write_lock_irq(&tasklist_lock); | 411 | write_lock_irq(&tasklist_lock); |
410 | __exit_signal(tsk); | 412 | __exit_signal(tsk); |
411 | write_unlock_irq(&tasklist_lock); | 413 | write_unlock_irq(&tasklist_lock); |