73863ab028
Current CPU hotplug code has some task->mm handling issues: 1. Working with task->mm w/o getting mm or grabing the task lock is dangerous as ->mm might disappear (exit_mm() assigns NULL under task_lock(), so tasklist lock is not enough). We can't use get_task_mm()/mmput() pair as mmput() might sleep, so we must take the task lock while handle its mm. 2. Checking for process->mm is not enough because process' main thread may exit or detach its mm via use_mm(), but other threads may still have a valid mm. To fix this we would need to use find_lock_task_mm(), which would walk up all threads and returns an appropriate task (with task lock held). clear_tasks_mm_cpumask() has all the issues fixed, so let's use it. Suggested-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
40x_mmu.c | ||
44x_mmu.c | ||
Makefile | ||
dma-noncoherent.c | ||
fault.c | ||
fsl_booke_mmu.c | ||
gup.c | ||
hash_low_32.S | ||
hash_low_64.S | ||
hash_native_64.c | ||
hash_utils_64.c | ||
highmem.c | ||
hugetlbpage-book3e.c | ||
hugetlbpage-hash64.c | ||
hugetlbpage.c | ||
icswx.c | ||
icswx.h | ||
icswx_pid.c | ||
init_32.c | ||
init_64.c | ||
mem.c | ||
mmap_64.c | ||
mmu_context_hash32.c | ||
mmu_context_hash64.c | ||
mmu_context_nohash.c | ||
mmu_decl.h | ||
numa.c | ||
pgtable.c | ||
pgtable_32.c | ||
pgtable_64.c | ||
ppc_mmu_32.c | ||
slb.c | ||
slb_low.S | ||
slice.c | ||
stab.c | ||
subpage-prot.c | ||
tlb_hash32.c | ||
tlb_hash64.c | ||
tlb_low_64e.S | ||
tlb_nohash.c | ||
tlb_nohash_low.S |