aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2017-11-24 10:23:15 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2017-11-24 10:37:01 -0500
commit345f8f34bb473241d62803951c18a844dd705f8d (patch)
treed1921973c63cdc100bafe94a83c70e892224ee1b
parentfec37202e8a5c060e0c46cd353bf0b6d26b9cb02 (diff)
s390: revert ELF_ET_DYN_BASE base changes
This reverts commit a73dc5370e153ac63718d850bddf0c9aa9d871e6. Reducing the base address for 31-bit PIE executables from (STACK_TOP/3)*2 to 4MB broke several compat programs which use -fpie to move the executable out of the lower 16MB. Cc: <stable@vger.kernel.org> # 4.13+ Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/include/asm/elf.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index 9a3cb3983c01..1a61b1b997f2 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -194,13 +194,14 @@ struct arch_elf_state {
194#define CORE_DUMP_USE_REGSET 194#define CORE_DUMP_USE_REGSET
195#define ELF_EXEC_PAGESIZE PAGE_SIZE 195#define ELF_EXEC_PAGESIZE PAGE_SIZE
196 196
197/* 197/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
198 * This is the base location for PIE (ET_DYN with INTERP) loads. On 198 use of this is to invoke "./ld.so someprog" to test out a new version of
199 * 64-bit, this is raised to 4GB to leave the entire 32-bit address 199 the loader. We need to make sure that it is out of the way of the program
200 * space open for things that want to use the area for 32-bit pointers. 200 that it will "exec", and that there is sufficient room for the brk. 64-bit
201 */ 201 tasks are aligned to 4GB. */
202#define ELF_ET_DYN_BASE (is_compat_task() ? 0x000400000UL : \ 202#define ELF_ET_DYN_BASE (is_compat_task() ? \
203 0x100000000UL) 203 (STACK_TOP / 3 * 2) : \
204 (STACK_TOP / 3 * 2) & ~((1UL << 32) - 1))
204 205
205/* This yields a mask that user programs can use to figure out what 206/* This yields a mask that user programs can use to figure out what
206 instruction set this CPU supports. */ 207 instruction set this CPU supports. */