diff options
| author | Hugh Dickins <hugh@veritas.com> | 2005-03-15 23:05:28 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-03-15 23:05:28 -0800 |
| commit | b3976eb3cb29e1b446b43ec93428026afe0cb5bb (patch) | |
| tree | 557b6c4221e84f30bce7e8556eb15a3e4a4459b7 | |
| parent | cda61e3d87e6d457f9cbd99560eab501d9c6a89b (diff) | |
[PATCH] tasklist left locked
On 4-way SMP, about one reboot in twenty hangs while killing processes:
exit needs exclusive tasklist_lock, but something still holds read_lock.
do_signal_stop race case misses unlock, and fixing it fixes the symptom.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Acked-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | kernel/signal.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index e413b1ae6bac..d60b47641b79 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1745,6 +1745,7 @@ do_signal_stop(int signr) * with another processor delivering a stop signal, * then the SIGCONT that wakes us up should clear it. */ + read_unlock(&tasklist_lock); return 0; } |
