diff options
author | Bhavesh P. Davda <bhavesh@avaya.com> | 2005-08-17 14:26:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-08-17 15:52:04 -0400 |
commit | dd12f48d4e8774415b528d3991ae47c28f26e1ac (patch) | |
tree | d8083c3415d540adb7983bd23a80fb8420fa8414 /kernel/signal.c | |
parent | ade6648b3b11a5d81f6f28135193ab6d85d621db (diff) |
[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>
Diffstat (limited to 'kernel/signal.c')
-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 ca1186eef938..d282fea81138 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -692,7 +692,7 @@ static void handle_stop_signal(int sig, struct task_struct *p) | |||
692 | { | 692 | { |
693 | struct task_struct *t; | 693 | struct task_struct *t; |
694 | 694 | ||
695 | if (p->flags & SIGNAL_GROUP_EXIT) | 695 | if (p->signal->flags & SIGNAL_GROUP_EXIT) |
696 | /* | 696 | /* |
697 | * The process is in the middle of dying already. | 697 | * The process is in the middle of dying already. |
698 | */ | 698 | */ |