|
@@ -1158,6 +1158,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
|
|
struct vm_area_struct *vma = v;
|
|
|
struct numa_maps *md = &numa_priv->md;
|
|
|
struct file *file = vma->vm_file;
|
|
|
+ struct task_struct *task = proc_priv->task;
|
|
|
struct mm_struct *mm = vma->vm_mm;
|
|
|
struct mm_walk walk = {};
|
|
|
struct mempolicy *pol;
|
|
@@ -1177,9 +1178,11 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
|
|
walk.private = md;
|
|
|
walk.mm = mm;
|
|
|
|
|
|
- pol = get_vma_policy(proc_priv->task, vma, vma->vm_start);
|
|
|
+ task_lock(task);
|
|
|
+ pol = get_vma_policy(task, vma, vma->vm_start);
|
|
|
mpol_to_str(buffer, sizeof(buffer), pol, 0);
|
|
|
mpol_cond_put(pol);
|
|
|
+ task_unlock(task);
|
|
|
|
|
|
seq_printf(m, "%08lx %s", vma->vm_start, buffer);
|
|
|
|
|
@@ -1189,7 +1192,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
|
|
} else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
|
|
|
seq_printf(m, " heap");
|
|
|
} else {
|
|
|
- pid_t tid = vm_is_stack(proc_priv->task, vma, is_pid);
|
|
|
+ pid_t tid = vm_is_stack(task, vma, is_pid);
|
|
|
if (tid != 0) {
|
|
|
/*
|
|
|
* Thread stack in /proc/PID/task/TID/maps or
|