diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2005-10-29 19:37:40 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-29 10:28:13 -0700 |
commit | 8d027de54c77d38eedc9b331c7a2a39807d34691 (patch) | |
tree | cfa290c7ca6b63f33b2b4624695596f38bcda2fd /kernel/signal.c | |
parent | 47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (diff) | |
download | lwn-8d027de54c77d38eedc9b331c7a2a39807d34691.tar.gz lwn-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.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) 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); |