mm: reduce atomic use on use_mm fast path
[safe/jmp/linux-2.6] / mm / mmu_context.c
index fd473b5..ded9081 100644 (file)
@@ -26,13 +26,16 @@ void use_mm(struct mm_struct *mm)
 
        task_lock(tsk);
        active_mm = tsk->active_mm;
-       atomic_inc(&mm->mm_count);
+       if (active_mm != mm) {
+               atomic_inc(&mm->mm_count);
+               tsk->active_mm = mm;
+       }
        tsk->mm = mm;
-       tsk->active_mm = mm;
        switch_mm(active_mm, mm, tsk);
        task_unlock(tsk);
 
-       mmdrop(active_mm);
+       if (active_mm != mm)
+               mmdrop(active_mm);
 }
 
 /*