On Wed, Aug 01, 2018 at 06:34:40PM -0700, Sodagudi Prasad wrote: > diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c > index e190d1e..f932e1e 100644 > --- a/kernel/stop_machine.c > +++ b/kernel/stop_machine.c > @@ -87,9 +87,9 @@ static bool cpu_stop_queue_work(unsigned int cpu, struct > cpu_stop_work *work) > __cpu_stop_queue_work(stopper, work, &wakeq); > else if (work->done) > cpu_stop_signal_done(work->done); > - raw_spin_unlock_irqrestore(&stopper->lock, flags); > > wake_up_q(&wakeq); > + raw_spin_unlock_irqrestore(&stopper->lock, flags); >
That puts the wakeup back under stopper lock, which causes another deadlock iirc.