diff options
Diffstat (limited to 'kernel/stop_machine.c')
-rw-r--r-- | kernel/stop_machine.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c index 2b5a6754646f..fa53a472dd44 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -85,8 +85,11 @@ static bool cpu_stop_queue_work(unsigned int cpu, struct cpu_stop_work *work) enabled = stopper->enabled; if (enabled) __cpu_stop_queue_work(stopper, work, &wakeq); - else if (work->done) - cpu_stop_signal_done(work->done); + else { + work->disabled = true; + if (work->done) + cpu_stop_signal_done(work->done); + } raw_spin_unlock_irqrestore(&stopper->lock, flags); wake_up_q(&wakeq); |