Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / x86 / mm / tlb.c
index 3804471db1046ec17ea76be9ba04417fa650142c..5e57e113b72c1388bc89599a88a79cd237a67330 100644 (file)
@@ -61,11 +61,13 @@ static DEFINE_PER_CPU_READ_MOSTLY(int, tlb_vector_offset);
  */
 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();
-       cpumask_clear_cpu(cpu,
-                         mm_cpumask(this_cpu_read(cpu_tlbstate.active_mm)));
-       load_cr3(swapper_pg_dir);
+       if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) {
+               cpumask_clear_cpu(cpu, mm_cpumask(active_mm));
+               load_cr3(swapper_pg_dir);
+       }
 }
 EXPORT_SYMBOL_GPL(leave_mm);