On Thu, 2017-05-25 at 17:47 -0700, Andy Lutomirski wrote: > > +++ b/arch/x86/mm/tlb.c > @@ -311,7 +311,7 @@ void flush_tlb_mm_range(struct mm_struct *mm, > unsigned long start, > goto out; > } > > - if (!current->mm) { > + if (this_cpu_read(cpu_tlbstate.state) != TLBSTATE_OK) { > leave_mm(smp_processor_id()); Unless -mm changed leave_mm (I did not check), this is not quite correct yet. The reason is leave_mm (at least in the latest Linus tree) ignores the cpu argument for one of its checks. You should probably fix that in an earlier patch, assuming you haven't already done so in -mm. void leave_mm(int cpu) { struct mm_struct *active_mm = this_cpu_read(cpu_tlbstate.active_mm); if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) BUG(); if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); load_cr3(swapper_pg_dir); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>