X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=kernel%2Fsignal.c;h=0508544c8ced0d96913905dc53af68f38b6ee618;hb=0d25ebc825bac75ae478c985eff837d16a486f54;hp=f3f1f7a972fd40f3d437d6bf3b5db2cacaffe6ca;hpb=d3de94ba4e58e8043d500f7335797d6a2ac93248;p=firefly-linux-kernel-4.4.55.git 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) current->saved_sigmask = current->blocked; set_current_blocked(set); - __set_current_state(TASK_INTERRUPTIBLE); - schedule(); + while (!signal_pending(current)) { + __set_current_state(TASK_INTERRUPTIBLE); + schedule(); + } set_restore_sigmask(); return -ERESTARTNOHAND; }