aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sched.c10
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 */
5909bool try_wait_for_completion(struct completion *x) 5909bool 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}
5921EXPORT_SYMBOL(try_wait_for_completion); 5922EXPORT_SYMBOL(try_wait_for_completion);
@@ -5930,12 +5931,13 @@ EXPORT_SYMBOL(try_wait_for_completion);
5930 */ 5931 */
5931bool completion_done(struct completion *x) 5932bool 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}
5941EXPORT_SYMBOL(completion_done); 5943EXPORT_SYMBOL(completion_done);