lkml.org 
[lkml]   [2012]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/8] powerpc/mm: 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/powerpc/mm/mmu_context_nohash.c | 3 +++
    1 files changed, 3 insertions(+), 0 deletions(-)

    diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c
    index 5b63bd3..13ec484 100644
    --- a/arch/powerpc/mm/mmu_context_nohash.c
    +++ b/arch/powerpc/mm/mmu_context_nohash.c
    @@ -43,6 +43,7 @@
    #include <linux/kernel.h>
    #include <linux/mm.h>
    #include <linux/init.h>
    +#include <linux/sched.h>
    #include <linux/spinlock.h>
    #include <linux/bootmem.h>
    #include <linux/notifier.h>
    @@ -360,8 +361,10 @@ static int __cpuinit mmu_context_cpu_notify(struct notifier_block *self,
    /* We also clear the cpu_vm_mask bits of CPUs going away */
    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);
    break;
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2012-02-07 07:53    [W:0.020 / U:29.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site