aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>2017-11-07 05:38:04 -0500
committerThomas Gleixner <tglx@linutronix.de>2017-11-09 12:20:20 -0500
commitbe739f4b5ddece74ef25e2304b17a7fd24575e9b (patch)
tree2e0f2e78107f54781f4e278bdbbd5df0a14760bc
parentd0cd64b02aa854d68ce517cb7da1fe4e4fff2653 (diff)
x86/mm: Fix ELF_ET_DYN_BASE for 5-level paging
On machines with 5-level paging we don't want to allocate mapping above 47-bit unless user explicitly asked for it. See b569bab78d8d ("x86/mm: Prepare to expose larger address space to userspace") for details. c715b72c1ba4 ("mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes") broke the behaviour. After the commit elf binary and heap got mapped above 47-bits. Use DEFAULT_MAP_WINDOW instead of TASK_SIZE to determine ELF_ET_DYN_BASE so it's forced to be below 47-bits unconditionally. Fixes: c715b72c1ba4 ("mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes") Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Kees Cook <keescook@chromium.org> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org> Link: https://lkml.kernel.org/r/20171107103804.47341-1-kirill.shutemov@linux.intel.com
-rw-r--r--arch/x86/include/asm/elf.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index c1a125e47ff3..3a091cea36c5 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -253,7 +253,7 @@ extern int force_personality32;
253 * space open for things that want to use the area for 32-bit pointers. 253 * space open for things that want to use the area for 32-bit pointers.
254 */ 254 */
255#define ELF_ET_DYN_BASE (mmap_is_ia32() ? 0x000400000UL : \ 255#define ELF_ET_DYN_BASE (mmap_is_ia32() ? 0x000400000UL : \
256 (TASK_SIZE / 3 * 2)) 256 (DEFAULT_MAP_WINDOW / 3 * 2))
257 257
258/* This yields a mask that user programs can use to figure out what 258/* This yields a mask that user programs can use to figure out what
259 instruction set this CPU supports. This could be done in user space, 259 instruction set this CPU supports. This could be done in user space,