Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

uml: activate_mm: remove the dead PF_BORROWED_MM check

use_mm() was changed to use switch_mm() instead of activate_mm(), since
then nobody calls (and nobody should call) activate_mm() with
PF_BORROWED_MM bit set.

As Jeff Dike pointed out, we can also remove the "old != new" check, it is
always true.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Oleg Nesterov and committed by
Linus Torvalds
aab2545f 06a1578e

+3 -13
-4
fs/aio.c
··· 591 591 atomic_inc(&mm->mm_count); 592 592 tsk->mm = mm; 593 593 tsk->active_mm = mm; 594 - /* 595 - * Note that on UML this *requires* PF_BORROWED_MM to be set, otherwise 596 - * it won't work. Update it accordingly if you change it here 597 - */ 598 594 switch_mm(active_mm, mm, tsk); 599 595 task_unlock(tsk); 600 596
+3 -9
include/asm-um/mmu_context.h
··· 22 22 static inline void activate_mm(struct mm_struct *old, struct mm_struct *new) 23 23 { 24 24 /* 25 - * This is called by fs/exec.c and fs/aio.c. In the first case, for an 26 - * exec, we don't need to do anything as we're called from userspace 27 - * and thus going to use a new host PID. In the second, we're called 28 - * from a kernel thread, and thus need to go doing the mmap's on the 29 - * host. Since they're very expensive, we want to avoid that as far as 30 - * possible. 25 + * This is called by fs/exec.c and sys_unshare() 26 + * when the new ->mm is used for the first time. 31 27 */ 32 - if (old != new && (current->flags & PF_BORROWED_MM)) 33 - __switch_mm(&new->context.id); 34 - 28 + __switch_mm(&new->context.id); 35 29 arch_dup_mmap(old, new); 36 30 } 37 31