X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=kernel%2Fsignal.c;h=0508544c8ced0d96913905dc53af68f38b6ee618;hb=25b0332fe62be1cbb384bb1094aa30848d4a5c0c;hp=f3f1f7a972fd40f3d437d6bf3b5db2cacaffe6ca;hpb=069ec22915b0932e1c2da53255a705593743374f;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; }