The patch titled Subject: kernel/exit: compute current directly has been removed from the -mm tree. Its filename was kernel-exit-compute-current-directly.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ From: Davidlohr Bueso <dave@xxxxxxxxxxxx> Subject: kernel/exit: compute current directly Patch series "current vs ptr to current dereferencing". First three patches get rid of 'tsk = current' based assignments to simply use current/get_current macro directly now that we have some actual numbers -- in which the conversion does improve some performance numbers, specially the locking bits. This is only around what directly is touched by patch 4, making it very obvious that we are indeed calling upon the current task. There are other users left with this pattern that could be cleaned up later. This patch (of 4): This patch effectively replaces the tsk pointer dereference (which is obviously == current), to directly use get_current() macro. In this case, do_exit() always passes current to exit_mm(), hence we can simply get rid of the arg. This is also a performance win on some archs such as x86-64 and ppc64 -- arm64 is no longer an issue: https://lkml.org/lkml/2016/12/30/230 Link: http://lkml.kernel.org/r/1483479794-14013-2-git-send-email-dave@xxxxxxxxxxxx Signed-off-by: Davidlohr Bueso <dbueso@xxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Mark Rutland <mark.rutland@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/exit.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff -puN kernel/exit.c~kernel-exit-compute-current-directly kernel/exit.c --- a/kernel/exit.c~kernel-exit-compute-current-directly +++ a/kernel/exit.c @@ -467,12 +467,12 @@ assign_new_owner: * Turn us into a lazy TLB process if we * aren't already.. */ -static void exit_mm(struct task_struct *tsk) +static void exit_mm(void) { - struct mm_struct *mm = tsk->mm; + struct mm_struct *mm = current->mm; struct core_state *core_state; - mm_release(tsk, mm); + mm_release(current, mm); if (!mm) return; sync_mm_rss(mm); @@ -490,7 +490,7 @@ static void exit_mm(struct task_struct * up_read(&mm->mmap_sem); - self.task = tsk; + self.task = current; self.next = xchg(&core_state->dumper.next, &self); /* * Implies mb(), the result of xchg() must be visible @@ -500,22 +500,22 @@ static void exit_mm(struct task_struct * complete(&core_state->startup); for (;;) { - set_task_state(tsk, TASK_UNINTERRUPTIBLE); + set_task_state(current, TASK_UNINTERRUPTIBLE); if (!self.task) /* see coredump_finish() */ break; freezable_schedule(); } - __set_task_state(tsk, TASK_RUNNING); + __set_task_state(current, TASK_RUNNING); down_read(&mm->mmap_sem); } atomic_inc(&mm->mm_count); - BUG_ON(mm != tsk->active_mm); + BUG_ON(mm != current->active_mm); /* more a memory barrier than a real lock */ - task_lock(tsk); - tsk->mm = NULL; + task_lock(current); + current->mm = NULL; up_read(&mm->mmap_sem); enter_lazy_tlb(mm, current); - task_unlock(tsk); + task_unlock(current); mm_update_next_owner(mm); mmput(mm); if (test_thread_flag(TIF_MEMDIE)) @@ -822,7 +822,7 @@ void __noreturn do_exit(long code) tsk->exit_code = code; taskstats_exit(tsk, group_dead); - exit_mm(tsk); + exit_mm(); if (group_dead) acct_process(); _ Patches currently in -mm which might be from dave@xxxxxxxxxxxx are m32r-use-generic-currenth.patch mmcompaction-serialize-waitqueue_active-checks.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html