mm: arch: make get_gate_vma take an mm_struct instead of a task_struct
Morally, the presence of a gate vma is more an attribute of a particular mm than a particular task. Moreover, dropping the dependency on task_struct will help make both existing and future operations on mm's more flexible and convenient. Signed-off-by: Stephen Wilson <wilsons@start.ca> Reviewed-by: Michel Lespinasse <walken@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -417,11 +417,12 @@ const char *arch_vma_name(struct vm_area_struct *vma)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
|
||||
struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
|
||||
{
|
||||
struct mm_struct *mm = tsk->mm;
|
||||
|
||||
/* Check to see if this task was created in compat vdso mode */
|
||||
/*
|
||||
* Check to see if the corresponding task was created in compat vdso
|
||||
* mode.
|
||||
*/
|
||||
if (mm && mm->context.vdso == (void *)VDSO_HIGH_BASE)
|
||||
return &gate_vma;
|
||||
return NULL;
|
||||
@@ -429,7 +430,7 @@ struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
|
||||
|
||||
int in_gate_area(struct task_struct *task, unsigned long addr)
|
||||
{
|
||||
const struct vm_area_struct *vma = get_gate_vma(task);
|
||||
const struct vm_area_struct *vma = get_gate_vma(task->mm);
|
||||
|
||||
return vma && addr >= vma->vm_start && addr < vma->vm_end;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user