aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index c89821b69ae3..d282fea81138 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -213,6 +213,7 @@ static inline int has_pending_signals(sigset_t *signal, sigset_t *blocked)
213fastcall void recalc_sigpending_tsk(struct task_struct *t) 213fastcall void recalc_sigpending_tsk(struct task_struct *t)
214{ 214{
215 if (t->signal->group_stop_count > 0 || 215 if (t->signal->group_stop_count > 0 ||
216 (freezing(t)) ||
216 PENDING(&t->pending, &t->blocked) || 217 PENDING(&t->pending, &t->blocked) ||
217 PENDING(&t->signal->shared_pending, &t->blocked)) 218 PENDING(&t->signal->shared_pending, &t->blocked))
218 set_tsk_thread_flag(t, TIF_SIGPENDING); 219 set_tsk_thread_flag(t, TIF_SIGPENDING);
@@ -691,7 +692,7 @@ static void handle_stop_signal(int sig, struct task_struct *p)
691{ 692{
692 struct task_struct *t; 693 struct task_struct *t;
693 694
694 if (p->flags & SIGNAL_GROUP_EXIT) 695 if (p->signal->flags & SIGNAL_GROUP_EXIT)
695 /* 696 /*
696 * The process is in the middle of dying already. 697 * The process is in the middle of dying already.
697 */ 698 */
@@ -2230,8 +2231,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
2230 current->state = TASK_INTERRUPTIBLE; 2231 current->state = TASK_INTERRUPTIBLE;
2231 timeout = schedule_timeout(timeout); 2232 timeout = schedule_timeout(timeout);
2232 2233
2233 if (current->flags & PF_FREEZE) 2234 try_to_freeze();
2234 refrigerator(PF_FREEZE);
2235 spin_lock_irq(&current->sighand->siglock); 2235 spin_lock_irq(&current->sighand->siglock);
2236 sig = dequeue_signal(current, &these, &info); 2236 sig = dequeue_signal(current, &these, &info);
2237 current->blocked = current->real_blocked; 2237 current->blocked = current->real_blocked;