]> git.hungrycats.org Git - linux/commitdiff
[PATCH] tasklist left locked
authorHugh Dickins <hugh@veritas.com>
Fri, 18 Mar 2005 13:41:52 +0000 (05:41 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 18 Mar 2005 13:41:52 +0000 (05:41 -0800)
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: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/signal.c

index 9e87ab3f8f21f7e1654bf53e2612f60cf7f3284e..63ae3d58439039b4bb7adc3dabdee1e941dc5e4b 100644 (file)
@@ -1728,6 +1728,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;
                }