diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2006-03-28 19:11:23 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-28 21:36:43 -0500 |
commit | aacc90944d4b1f2fcec73a8127eb60a3a701ce1c (patch) | |
tree | 34b8977a00913e46858d918fd437143882c66ee3 /kernel/exit.c | |
parent | a122b341b74c08020f6521b615acca6a692aac79 (diff) |
[PATCH] do_group_exit: don't take tasklist_lock
do_group_exit() takes tasklist_lock for zap_other_threads(), this is unneeded
now.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 44d6c6e3896d..aea23e713cf4 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -985,7 +985,6 @@ do_group_exit(int exit_code) | |||
985 | else if (!thread_group_empty(current)) { | 985 | else if (!thread_group_empty(current)) { |
986 | struct signal_struct *const sig = current->signal; | 986 | struct signal_struct *const sig = current->signal; |
987 | struct sighand_struct *const sighand = current->sighand; | 987 | struct sighand_struct *const sighand = current->sighand; |
988 | read_lock(&tasklist_lock); | ||
989 | spin_lock_irq(&sighand->siglock); | 988 | spin_lock_irq(&sighand->siglock); |
990 | if (sig->flags & SIGNAL_GROUP_EXIT) | 989 | if (sig->flags & SIGNAL_GROUP_EXIT) |
991 | /* Another thread got here before we took the lock. */ | 990 | /* Another thread got here before we took the lock. */ |
@@ -995,7 +994,6 @@ do_group_exit(int exit_code) | |||
995 | zap_other_threads(current); | 994 | zap_other_threads(current); |
996 | } | 995 | } |
997 | spin_unlock_irq(&sighand->siglock); | 996 | spin_unlock_irq(&sighand->siglock); |
998 | read_unlock(&tasklist_lock); | ||
999 | } | 997 | } |
1000 | 998 | ||
1001 | do_exit(exit_code); | 999 | do_exit(exit_code); |