|
@@ -5908,14 +5908,15 @@ EXPORT_SYMBOL(wait_for_completion_killable);
|
|
|
*/
|
|
|
bool try_wait_for_completion(struct completion *x)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
int ret = 1;
|
|
|
|
|
|
- spin_lock_irq(&x->wait.lock);
|
|
|
+ spin_lock_irqsave(&x->wait.lock, flags);
|
|
|
if (!x->done)
|
|
|
ret = 0;
|
|
|
else
|
|
|
x->done--;
|
|
|
- spin_unlock_irq(&x->wait.lock);
|
|
|
+ spin_unlock_irqrestore(&x->wait.lock, flags);
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(try_wait_for_completion);
|
|
@@ -5930,12 +5931,13 @@ EXPORT_SYMBOL(try_wait_for_completion);
|
|
|
*/
|
|
|
bool completion_done(struct completion *x)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
int ret = 1;
|
|
|
|
|
|
- spin_lock_irq(&x->wait.lock);
|
|
|
+ spin_lock_irqsave(&x->wait.lock, flags);
|
|
|
if (!x->done)
|
|
|
ret = 0;
|
|
|
- spin_unlock_irq(&x->wait.lock);
|
|
|
+ spin_unlock_irqrestore(&x->wait.lock, flags);
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(completion_done);
|