projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9f14c42
)
powerpc: More stack randomisation for 64bit binaries
author
Anton Blanchard
<anton@samba.org>
Sun, 22 Feb 2009 01:50:02 +0000
(
01:50
+0000)
committer
Benjamin Herrenschmidt
<benh@kernel.crashing.org>
Mon, 23 Feb 2009 04:53:07 +0000
(15:53 +1100)
At the moment we randomise the stack by 8MB on 32bit and 64bit tasks. Since we
have a lot more address space to play with on 64bit, lets do what x86 does and
increase that randomisation to 1GB:
before:
# for i in seq `1 10` ; do sleep 1 & cat /proc/${!}/maps | grep stack; done
fffffebc000
-
fffffed1000
rw-p
ffffffeb000
00:00 0 [stack]
ffffff5a000
-
ffffff6f000
rw-p
ffffffeb000
00:00 0 [stack]
fffffdb2000
-
fffffdc7000
rw-p
ffffffeb000
00:00 0 [stack]
fffffd3e000
-
fffffd53000
rw-p
ffffffeb000
00:00 0 [stack]
fffffad9000
-
fffffaee000
rw-p
ffffffeb000
00:00 0 [stack]
after:
# for i in seq `1 10` ; do sleep 1 & cat /proc/${!}/maps | grep stack; done
ffff5c27000
-
ffff5c3c000
rw-p
ffffffeb000
00:00 0 [stack]
fffebe5e000
-
fffebe73000
rw-p
ffffffeb000
00:00 0 [stack]
fffcb298000
-
fffcb2ad000
rw-p
ffffffeb000
00:00 0 [stack]
fffc719d000
-
fffc71b2000
rw-p
ffffffeb000
00:00 0 [stack]
fffe01af000
-
fffe01c4000
rw-p
ffffffeb000
00:00 0 [stack]
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/elf.h
patch
|
blob
|
history
diff --git
a/arch/powerpc/include/asm/elf.h
b/arch/powerpc/include/asm/elf.h
index c125da793b07af47d2ef2b5442f9d52141324e46..3f94d8880e6ccb5b5f46af05339b3045f2c73a13 100644
(file)
--- a/
arch/powerpc/include/asm/elf.h
+++ b/
arch/powerpc/include/asm/elf.h
@@
-271,6
+271,11
@@
extern int arch_setup_additional_pages(struct linux_binprm *bprm,
int uses_interp);
#define VDSO_AUX_ENT(a,b) NEW_AUX_ENT(a,b);
+/* 1GB for 64bit, 8MB for 32bit */
+#define STACK_RND_MASK (is_32bit_task() ? \
+ (0x7ff >> (PAGE_SHIFT - 12)) : \
+ (0x3ffff >> (PAGE_SHIFT - 12)))
+
#endif /* __KERNEL__ */
/*