Commit 3a86395e authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Kamal Mostafa

s390/mm: align 64-bit PIE binaries to 4GB

commit 4ba2815d upstream.

The base address (STACK_TOP / 3 * 2) for a 64-bit program is two thirds
into the 4GB segment at 0x2aa00000000. The randomization added on z13
can eat another 1GB of the remaining 1.33GB to the next 4GB boundary.
In the worst case 300MB are left for the executable + bss which may
cross into the next 4GB segment. This is bad for branch prediction,
therefore align the base address to 4GB to give the program more room
before it crosses the 4GB boundary.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 7ae77468
...@@ -183,7 +183,10 @@ unsigned long randomize_et_dyn(void) ...@@ -183,7 +183,10 @@ unsigned long randomize_et_dyn(void)
{ {
unsigned long base; unsigned long base;
base = (STACK_TOP / 3 * 2) & (~mmap_align_mask << PAGE_SHIFT); base = STACK_TOP / 3 * 2;
if (!is_32bit_task())
/* Align to 4GB */
base &= ~((1UL << 32) - 1);
return base + mmap_rnd(); return base + mmap_rnd();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment