aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 9a1ddb84e26d..29e2ec0bd831 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1921,11 +1921,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
1921 running = task_running(rq, p); 1921 running = task_running(rq, p);
1922 on_rq = p->se.on_rq; 1922 on_rq = p->se.on_rq;
1923 ncsw = 0; 1923 ncsw = 0;
1924 if (!match_state || p->state == match_state) { 1924 if (!match_state || p->state == match_state)
1925 ncsw = p->nivcsw + p->nvcsw; 1925 ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
1926 if (unlikely(!ncsw))
1927 ncsw = 1;
1928 }
1929 task_rq_unlock(rq, &flags); 1926 task_rq_unlock(rq, &flags);
1930 1927
1931 /* 1928 /*
@@ -4599,10 +4596,7 @@ do_wait_for_common(struct completion *x, long timeout, int state)
4599 wait.flags |= WQ_FLAG_EXCLUSIVE; 4596 wait.flags |= WQ_FLAG_EXCLUSIVE;
4600 __add_wait_queue_tail(&x->wait, &wait); 4597 __add_wait_queue_tail(&x->wait, &wait);
4601 do { 4598 do {
4602 if ((state == TASK_INTERRUPTIBLE && 4599 if (signal_pending_state(state, current)) {
4603 signal_pending(current)) ||
4604 (state == TASK_KILLABLE &&
4605 fatal_signal_pending(current))) {
4606 timeout = -ERESTARTSYS; 4600 timeout = -ERESTARTSYS;
4607 break; 4601 break;
4608 } 4602 }