Messages in this thread Patch in this message |  | | Date | Tue, 7 Feb 2012 10:50:04 +0400 | | From | Anton Vorontsov <> | | Subject | [PATCH 3/8] arm: Fix possible race on task->mm |
| |
Checking for task->mm 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 let's take the task lock while we care about its mm.
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> --- arch/arm/kernel/smp.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 57db122..85db3f2 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -168,8 +168,10 @@ int __cpu_disable(void) read_lock(&tasklist_lock); for_each_process(p) { + task_lock(p); if (p->mm) cpumask_clear_cpu(cpu, mm_cpumask(p->mm)); + task_unlock(p); } read_unlock(&tasklist_lock); -- 1.7.7.6
|  |