diff options
author | Bhavesh P. Davda <bhavesh@avaya.com> | 2005-08-29 09:55:12 -0700 |
---|---|---|
committer | Chris Wright <chrisw@osdl.org> | 2005-08-29 09:55:12 -0700 |
commit | 4b45a6364a096cc4d899c9d19aad852865eb0ebb (patch) | |
tree | 9336ad9cb63b5bf46aee0182429953ca757293d9 | |
parent | 332b8bee402fe1076e50d08dfa535a9f0a349cba (diff) | |
download | linux-stable-4b45a6364a096cc4d899c9d19aad852865eb0ebb.tar.gz linux-stable-4b45a6364a096cc4d899c9d19aad852865eb0ebb.tar.bz2 linux-stable-4b45a6364a096cc4d899c9d19aad852865eb0ebb.zip |
[PATCH] NPTL signal delivery deadlock fix
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>
-rw-r--r-- | kernel/signal.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index b3c24c732c5a..b1633302e57e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -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. */ |