|
@@ -81,6 +81,7 @@ static bool cpu_stop_queue_work(unsigned int cpu, struct cpu_stop_work *work)
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
bool enabled;
|
|
bool enabled;
|
|
|
|
|
|
|
|
+ preempt_disable();
|
|
raw_spin_lock_irqsave(&stopper->lock, flags);
|
|
raw_spin_lock_irqsave(&stopper->lock, flags);
|
|
enabled = stopper->enabled;
|
|
enabled = stopper->enabled;
|
|
if (enabled)
|
|
if (enabled)
|
|
@@ -90,6 +91,7 @@ static bool cpu_stop_queue_work(unsigned int cpu, struct cpu_stop_work *work)
|
|
raw_spin_unlock_irqrestore(&stopper->lock, flags);
|
|
raw_spin_unlock_irqrestore(&stopper->lock, flags);
|
|
|
|
|
|
wake_up_q(&wakeq);
|
|
wake_up_q(&wakeq);
|
|
|
|
+ preempt_enable();
|
|
|
|
|
|
return enabled;
|
|
return enabled;
|
|
}
|
|
}
|