aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/signal.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index f3f1f7a972fd..0508544c8ced 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -3508,8 +3508,10 @@ static int sigsuspend(sigset_t *set)
3508 current->saved_sigmask = current->blocked; 3508 current->saved_sigmask = current->blocked;
3509 set_current_blocked(set); 3509 set_current_blocked(set);
3510 3510
3511 __set_current_state(TASK_INTERRUPTIBLE); 3511 while (!signal_pending(current)) {
3512 schedule(); 3512 __set_current_state(TASK_INTERRUPTIBLE);
3513 schedule();
3514 }
3513 set_restore_sigmask(); 3515 set_restore_sigmask();
3514 return -ERESTARTNOHAND; 3516 return -ERESTARTNOHAND;
3515} 3517}