diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 4a3cb0614158..577f160131bd 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -4405,6 +4405,16 @@ do_wait_for_common(struct completion *x, long timeout, int state) | |||
| 4405 | spin_unlock_irq(&x->wait.lock); | 4405 | spin_unlock_irq(&x->wait.lock); |
| 4406 | timeout = schedule_timeout(timeout); | 4406 | timeout = schedule_timeout(timeout); |
| 4407 | spin_lock_irq(&x->wait.lock); | 4407 | spin_lock_irq(&x->wait.lock); |
| 4408 | |||
| 4409 | /* | ||
| 4410 | * If the completion has arrived meanwhile | ||
| 4411 | * then return 1 jiffy time left: | ||
| 4412 | */ | ||
| 4413 | if (x->done && !timeout) { | ||
| 4414 | timeout = 1; | ||
| 4415 | break; | ||
| 4416 | } | ||
| 4417 | |||
| 4408 | if (!timeout) { | 4418 | if (!timeout) { |
| 4409 | __remove_wait_queue(&x->wait, &wait); | 4419 | __remove_wait_queue(&x->wait, &wait); |
| 4410 | return timeout; | 4420 | return timeout; |
