diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2017-11-24 10:23:15 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2017-11-24 10:37:01 -0500 |
commit | 345f8f34bb473241d62803951c18a844dd705f8d (patch) | |
tree | d1921973c63cdc100bafe94a83c70e892224ee1b | |
parent | fec37202e8a5c060e0c46cd353bf0b6d26b9cb02 (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.h | 15 |
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. */ |