From: Bhavesh P. Davda Date: Mon, 29 Aug 2005 16:55:12 +0000 (-0700) Subject: [PATCH] NPTL signal delivery deadlock fix X-Git-Tag: v2.6.12.6~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b45a6364a096cc4d899c9d19aad852865eb0ebb;p=thirdparty%2Fkernel%2Fstable.git [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 Signed-off-by: Linus Torvalds Signed-off-by: Chris Wright --- diff --git a/kernel/signal.c b/kernel/signal.c index b3c24c732c5ad..b1633302e57e9 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. */