]> git.hungrycats.org Git - linux/commitdiff
[PATCH] NPTL signal delivery deadlock fix
authorBhavesh P. Davda <bhavesh@avaya.com>
Mon, 29 Aug 2005 16:55:12 +0000 (09:55 -0700)
committerChris Wright <chrisw@osdl.org>
Mon, 29 Aug 2005 16:55:12 +0000 (09:55 -0700)
This bug is quite subtle and only happens in a very interesting
situation where a real-time threaded process is in the middle of a
coredump when someone whacks it with a SIGKILL. However, this deadlock
leaves the system pretty hosed and you have to reboot to recover.

Not good for real-time priority-preemption applications like our
telephony application, with 90+ real-time (SCHED_FIFO and SCHED_RR)
processes, many of them multi-threaded, interacting with each other for
high volume call processing.

Acked-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Chris Wright <chrisw@osdl.org>
kernel/signal.c

index b3c24c732c5ad0d69a65945211151e84565435cb..b1633302e57e9af3da7ad201dcf924e606d7e4ca 100644 (file)
@@ -686,7 +686,7 @@ static void handle_stop_signal(int sig, struct task_struct *p)
 {
        struct task_struct *t;
 
-       if (p->flags & SIGNAL_GROUP_EXIT)
+       if (p->signal->flags & SIGNAL_GROUP_EXIT)
                /*
                 * The process is in the middle of dying already.
                 */