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 | |
| 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>
| -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); |
