aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2005-10-29 11:37:40 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-29 13:28:13 -0400
commit8d027de54c77d38eedc9b331c7a2a39807d34691 (patch)
treecfa290c7ca6b63f33b2b4624695596f38bcda2fd /kernel/signal.c
parent47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (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.c2
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
407void exit_signal(struct task_struct *tsk) 407void 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);