smp_call_function_many requires disabling preemption around the call. Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com> CC: Linus Torvalds <torva...@linux-foundation.org> CC: Peter Zijlstra <pet...@infradead.org> CC: Paul E. McKenney <paul...@linux.vnet.ibm.com> CC: Boqun Feng <boqun.f...@gmail.com> CC: Andrew Hunter <a...@google.com> CC: Maged Michael <maged.mich...@gmail.com> CC: Avi Kivity <a...@scylladb.com> CC: Benjamin Herrenschmidt <b...@kernel.crashing.org> CC: Paul Mackerras <pau...@samba.org> CC: Michael Ellerman <m...@ellerman.id.au> CC: Dave Watson <davejwat...@fb.com> CC: Thomas Gleixner <t...@linutronix.de> CC: Ingo Molnar <mi...@redhat.com> CC: "H. Peter Anvin" <h...@zytor.com> CC: Andrea Parri <parri.and...@gmail.com> CC: <sta...@vger.kernel.org> # v4.14 --- kernel/sched/membarrier.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/kernel/sched/membarrier.c b/kernel/sched/membarrier.c index dd7908743dab..9bcbacba82a8 100644 --- a/kernel/sched/membarrier.c +++ b/kernel/sched/membarrier.c @@ -89,7 +89,9 @@ static int membarrier_private_expedited(void) rcu_read_unlock(); } if (!fallback) { + preempt_disable(); smp_call_function_many(tmpmask, ipi_mb, NULL, 1); + preempt_enable(); free_cpumask_var(tmpmask); } cpus_read_unlock(); -- 2.11.0