From: Kirill Korotaev This patch fixes recalc_sigpending() to work correctly with tasks which are being freezed. The problem is that freeze_processes() sets PF_FREEZE and TIF_SIGPENDING flags on tasks, but recalc_sigpending() called from e.g. sys_rt_sigtimedwait or any other kernel place will clear TIF_SIGPENDING due to no pending signals queued and the tasks won't be freezed until it recieves a real signal or freezed_processes() fail due to timeout. Signed-Off-By: Kirill Korotaev Signed-Off-By: Alexey Kuznetsov Signed-off-by: Andrew Morton --- kernel/signal.c | 1 + 1 files changed, 1 insertion(+) diff -puN kernel/signal.c~software-suspend-and-recalc-sigpending-bug-fix kernel/signal.c --- 25/kernel/signal.c~software-suspend-and-recalc-sigpending-bug-fix 2005-05-11 18:32:00.000000000 -0700 +++ 25-akpm/kernel/signal.c 2005-05-11 18:32:37.000000000 -0700 @@ -213,6 +213,7 @@ static inline int has_pending_signals(si fastcall void recalc_sigpending_tsk(struct task_struct *t) { if (t->signal->group_stop_count > 0 || + (t->flags & PF_FREEZE) || PENDING(&t->pending, &t->blocked) || PENDING(&t->signal->shared_pending, &t->blocked)) set_tsk_thread_flag(t, TIF_SIGPENDING); _