Commit 83b964bbf82eb13a8f31bb49ca420787fe01f7a6
Committed by
Al Viro
1 parent
31db58b3ab
Exists in
master
and in
7 other branches
mm: arch: make in_gate_area take an mm_struct instead of a task_struct
Morally, the question of whether an address lies in a gate vma should be asked with respect to an mm, not a particular task. Moreover, dropping the dependency on task_struct will help make 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>
Showing 7 changed files with 10 additions and 10 deletions Side-by-side Diff
arch/powerpc/kernel/vdso.c
arch/s390/kernel/vdso.c
arch/sh/kernel/vsyscall/vsyscall.c
arch/x86/mm/init_64.c
... | ... | @@ -870,9 +870,9 @@ |
870 | 870 | return &gate_vma; |
871 | 871 | } |
872 | 872 | |
873 | -int in_gate_area(struct task_struct *task, unsigned long addr) | |
873 | +int in_gate_area(struct mm_struct *mm, unsigned long addr) | |
874 | 874 | { |
875 | - struct vm_area_struct *vma = get_gate_vma(task->mm); | |
875 | + struct vm_area_struct *vma = get_gate_vma(mm); | |
876 | 876 | |
877 | 877 | if (!vma) |
878 | 878 | return 0; |
arch/x86/vdso/vdso32-setup.c
... | ... | @@ -428,9 +428,9 @@ |
428 | 428 | return NULL; |
429 | 429 | } |
430 | 430 | |
431 | -int in_gate_area(struct task_struct *task, unsigned long addr) | |
431 | +int in_gate_area(struct mm_struct *mm, unsigned long addr) | |
432 | 432 | { |
433 | - const struct vm_area_struct *vma = get_gate_vma(task->mm); | |
433 | + const struct vm_area_struct *vma = get_gate_vma(mm); | |
434 | 434 | |
435 | 435 | return vma && addr >= vma->vm_start && addr < vma->vm_end; |
436 | 436 | } |
include/linux/mm.h
... | ... | @@ -1581,10 +1581,10 @@ |
1581 | 1581 | extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); |
1582 | 1582 | #ifdef __HAVE_ARCH_GATE_AREA |
1583 | 1583 | int in_gate_area_no_task(unsigned long addr); |
1584 | -int in_gate_area(struct task_struct *task, unsigned long addr); | |
1584 | +int in_gate_area(struct mm_struct *mm, unsigned long addr); | |
1585 | 1585 | #else |
1586 | 1586 | int in_gate_area_no_task(unsigned long addr); |
1587 | -#define in_gate_area(task, addr) ({(void)task; in_gate_area_no_task(addr);}) | |
1587 | +#define in_gate_area(mm, addr) ({(void)mm; in_gate_area_no_task(addr);}) | |
1588 | 1588 | #endif /* __HAVE_ARCH_GATE_AREA */ |
1589 | 1589 | |
1590 | 1590 | int drop_caches_sysctl_handler(struct ctl_table *, int, |
mm/memory.c
... | ... | @@ -1486,7 +1486,7 @@ |
1486 | 1486 | struct vm_area_struct *vma; |
1487 | 1487 | |
1488 | 1488 | vma = find_extend_vma(mm, start); |
1489 | - if (!vma && in_gate_area(tsk, start)) { | |
1489 | + if (!vma && in_gate_area(tsk->mm, start)) { | |
1490 | 1490 | unsigned long pg = start & PAGE_MASK; |
1491 | 1491 | struct vm_area_struct *gate_vma = get_gate_vma(tsk->mm); |
1492 | 1492 | pgd_t *pgd; |