diff options
-rw-r--r-- | kernel/sched.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index ff39cadf621e..8b3532f262d7 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5908,14 +5908,15 @@ EXPORT_SYMBOL(wait_for_completion_killable); | |||
5908 | */ | 5908 | */ |
5909 | bool try_wait_for_completion(struct completion *x) | 5909 | bool try_wait_for_completion(struct completion *x) |
5910 | { | 5910 | { |
5911 | unsigned long flags; | ||
5911 | int ret = 1; | 5912 | int ret = 1; |
5912 | 5913 | ||
5913 | spin_lock_irq(&x->wait.lock); | 5914 | spin_lock_irqsave(&x->wait.lock, flags); |
5914 | if (!x->done) | 5915 | if (!x->done) |
5915 | ret = 0; | 5916 | ret = 0; |
5916 | else | 5917 | else |
5917 | x->done--; | 5918 | x->done--; |
5918 | spin_unlock_irq(&x->wait.lock); | 5919 | spin_unlock_irqrestore(&x->wait.lock, flags); |
5919 | return ret; | 5920 | return ret; |
5920 | } | 5921 | } |
5921 | EXPORT_SYMBOL(try_wait_for_completion); | 5922 | EXPORT_SYMBOL(try_wait_for_completion); |
@@ -5930,12 +5931,13 @@ EXPORT_SYMBOL(try_wait_for_completion); | |||
5930 | */ | 5931 | */ |
5931 | bool completion_done(struct completion *x) | 5932 | bool completion_done(struct completion *x) |
5932 | { | 5933 | { |
5934 | unsigned long flags; | ||
5933 | int ret = 1; | 5935 | int ret = 1; |
5934 | 5936 | ||
5935 | spin_lock_irq(&x->wait.lock); | 5937 | spin_lock_irqsave(&x->wait.lock, flags); |
5936 | if (!x->done) | 5938 | if (!x->done) |
5937 | ret = 0; | 5939 | ret = 0; |
5938 | spin_unlock_irq(&x->wait.lock); | 5940 | spin_unlock_irqrestore(&x->wait.lock, flags); |
5939 | return ret; | 5941 | return ret; |
5940 | } | 5942 | } |
5941 | EXPORT_SYMBOL(completion_done); | 5943 | EXPORT_SYMBOL(completion_done); |