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>
Esse commit está contido em:
@@ -861,10 +861,10 @@ static struct vm_area_struct gate_vma = {
|
||||
.vm_flags = VM_READ | VM_EXEC
|
||||
};
|
||||
|
||||
struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
|
||||
struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
|
||||
{
|
||||
#ifdef CONFIG_IA32_EMULATION
|
||||
if (test_tsk_thread_flag(tsk, TIF_IA32))
|
||||
if (!mm || mm->context.ia32_compat)
|
||||
return NULL;
|
||||
#endif
|
||||
return &gate_vma;
|
||||
@@ -872,7 +872,7 @@ struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
|
||||
|
||||
int in_gate_area(struct task_struct *task, unsigned long addr)
|
||||
{
|
||||
struct vm_area_struct *vma = get_gate_vma(task);
|
||||
struct vm_area_struct *vma = get_gate_vma(task->mm);
|
||||
|
||||
if (!vma)
|
||||
return 0;
|
||||
|
Referência em uma nova issue
Block a user