linux/arch/powerpc/mm
Anton Vorontsov 73863ab028 powerpc: use clear_tasks_mm_cpumask()
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>
2012-05-31 17:49:29 -07:00
..
40x_mmu.c memblock: Remove rmo_size, burry it in arch/powerpc where it belongs 2010-08-05 12:56:08 +10:00
44x_mmu.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
dma-noncoherent.c powerpc: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:14 +08:00
fault.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
fsl_booke_mmu.c powerpc/fsl-booke: Fixup calc_cam_sz to support MMU v2 2012-03-15 12:12:19 -05:00
gup.c powerpc: remove superfluous PageTail checks on the pte gup_fast 2011-11-02 16:06:57 -07:00
hash_low_32.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
hash_low_64.S powerpc: Free up some CPU feature bits by moving out MMU-related features 2011-04-27 14:18:52 +10:00
hash_native_64.c KVM: PPC: book3s_hv: Add support for PPC970-family processors 2011-07-12 13:16:59 +03:00
hash_utils_64.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
highmem.c mm: fix race in kunmap_atomic() 2010-10-27 18:03:05 -07:00
hugetlbpage-book3e.c powerpc/book3e: Change hugetlb preload to take vma argument 2011-12-07 16:26:24 +11:00
hugetlbpage-hash64.c powerpc/mm: Add some debug output when hash insertion fails 2010-07-23 12:56:56 +10:00
hugetlbpage.c powerpc: fix compile fail in hugetlb cmdline parsing 2012-05-07 16:51:19 -07:00
icswx_pid.c powerpc: Split ICSWX ACOP and PID processing 2011-11-25 14:11:27 +11:00
icswx.c powerpc/icswx: Fix race condition with IPI setting ACOP 2012-03-07 17:06:09 +11:00
icswx.h powerpc/icswx: Fix race condition with IPI setting ACOP 2012-03-07 17:06:09 +11:00
init_32.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
init_64.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
Makefile powerpc: Split ICSWX ACOP and PID processing 2011-11-25 14:11:27 +11:00
mem.c powerpc: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:14 +08:00
mmap_64.c powerpc+sparc64/mm: Remove hack in mmap randomize layout 2011-11-28 11:42:09 +11:00
mmu_context_hash32.c powerpc: include export.h for files using EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:30:38 -04:00
mmu_context_hash64.c powerpc: Split ICSWX ACOP and PID processing 2011-11-25 14:11:27 +11:00
mmu_context_nohash.c powerpc: use clear_tasks_mm_cpumask() 2012-05-31 17:49:29 -07:00
mmu_decl.h powerpc/fsl-booke: Fix setup_initial_memory_limit to not blindly map 2011-10-11 23:30:41 -05:00
numa.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
pgtable_32.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
pgtable_64.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
pgtable.c powerpc: Hugetlb for BookE 2011-09-20 09:19:40 +10:00
ppc_mmu_32.c memblock: Remove rmo_size, burry it in arch/powerpc where it belongs 2010-08-05 12:56:08 +10:00
slb_low.S powerpc: Remove legacy iSeries bits from assembly files 2012-03-09 10:54:59 +11:00
slb.c powerpc: Remove FW_FEATURE ISERIES from arch code 2012-03-21 11:16:11 +11:00
slice.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
stab.c powerpc: Remove FW_FEATURE ISERIES from arch code 2012-03-21 11:16:11 +11:00
subpage-prot.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tlb_hash32.c powerpc: include export.h for files using EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:30:38 -04:00
tlb_hash64.c mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00
tlb_low_64e.S powerpc: Add hugepage support to 64-bit tablewalk code for FSL_BOOK3E 2011-12-07 16:26:22 +11:00
tlb_nohash_low.S powerpc/476: Workaround for PLB6 hang 2011-02-02 06:59:02 -05:00
tlb_nohash.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-01-06 17:58:22 -08:00