diff options
author | Andy Lutomirski <luto@amacapital.net> | 2014-08-08 17:23:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-08 18:57:27 -0400 |
commit | a6c19dfe39941a5d3f4d072121c0a4841e7e26fd (patch) | |
tree | 2324b68fd333c9b3ccaaa5fbccad1ab42ce59ee1 /include/linux/mm.h | |
parent | e0d9bf4cc0888befd00b1a7db383681be68aada9 (diff) |
arm64,ia64,ppc,s390,sh,tile,um,x86,mm: remove default gate area
The core mm code will provide a default gate area based on
FIXADDR_USER_START and FIXADDR_USER_END if
!defined(__HAVE_ARCH_GATE_AREA) && defined(AT_SYSINFO_EHDR).
This default is only useful for ia64. arm64, ppc, s390, sh, tile, 64-bit
UML, and x86_32 have their own code just to disable it. arm, 32-bit UML,
and x86_64 have gate areas, but they have their own implementations.
This gets rid of the default and moves the code into ia64.
This should save some code on architectures without a gate area: it's now
possible to inline the gate_area functions in the default case.
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Acked-by: Nathan Lynch <nathan_lynch@mentor.com>
Acked-by: H. Peter Anvin <hpa@linux.intel.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [in principle]
Acked-by: Richard Weinberger <richard@nod.at> [for um]
Acked-by: Will Deacon <will.deacon@arm.com> [for arm64]
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Nathan Lynch <Nathan_Lynch@mentor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r-- | include/linux/mm.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index e03dd29145a0..8981cc882ed2 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -2014,13 +2014,20 @@ static inline bool kernel_page_present(struct page *page) { return true; } | |||
2014 | #endif /* CONFIG_HIBERNATION */ | 2014 | #endif /* CONFIG_HIBERNATION */ |
2015 | #endif | 2015 | #endif |
2016 | 2016 | ||
2017 | #ifdef __HAVE_ARCH_GATE_AREA | ||
2017 | extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); | 2018 | extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); |
2018 | #ifdef __HAVE_ARCH_GATE_AREA | 2019 | extern int in_gate_area_no_mm(unsigned long addr); |
2019 | int in_gate_area_no_mm(unsigned long addr); | 2020 | extern int in_gate_area(struct mm_struct *mm, unsigned long addr); |
2020 | int in_gate_area(struct mm_struct *mm, unsigned long addr); | ||
2021 | #else | 2021 | #else |
2022 | int in_gate_area_no_mm(unsigned long addr); | 2022 | static inline struct vm_area_struct *get_gate_vma(struct mm_struct *mm) |
2023 | #define in_gate_area(mm, addr) ({(void)mm; in_gate_area_no_mm(addr);}) | 2023 | { |
2024 | return NULL; | ||
2025 | } | ||
2026 | static inline int in_gate_area_no_mm(unsigned long addr) { return 0; } | ||
2027 | static inline int in_gate_area(struct mm_struct *mm, unsigned long addr) | ||
2028 | { | ||
2029 | return 0; | ||
2030 | } | ||
2024 | #endif /* __HAVE_ARCH_GATE_AREA */ | 2031 | #endif /* __HAVE_ARCH_GATE_AREA */ |
2025 | 2032 | ||
2026 | #ifdef CONFIG_SYSCTL | 2033 | #ifdef CONFIG_SYSCTL |