summaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2005-10-29 19:37:40 +0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-29 10:28:13 -0700
commit8d027de54c77d38eedc9b331c7a2a39807d34691 (patch)
treecfa290c7ca6b63f33b2b4624695596f38bcda2fd /kernel/signal.c
parent47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (diff)
downloadkernel-crypto-8d027de54c77d38eedc9b331c7a2a39807d34691.tar.gz
kernel-crypto-8d027de54c77d38eedc9b331c7a2a39807d34691.tar.xz
kernel-crypto-8d027de54c77d38eedc9b331c7a2a39807d34691.zip
[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 f2b96b08fb4..6904bbbfe11 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -406,6 +406,8 @@ void __exit_signal(struct task_struct *tsk)
void exit_signal(struct task_struct *tsk)
{
+ atomic_dec(&tsk->signal->live);
+
write_lock_irq(&tasklist_lock);
__exit_signal(tsk);
write_unlock_irq(&tasklist_lock);