Improve previous user stack pointer randomisation patch
PATCH 1/1 Improve previous user stack pointer randomisation patch
This patch improves commit acc6f0110cf735e6c6e0f53736dbb054eafcd13c by:
- not using ALMASK to align stack pointer because this macro is used for kernel context. The kernel and the application are not always compiled with the same ABI.
- testing PF_RANDOMIZE process flag which is raised when the old condition we tested is true.
The first improvement was suggested by Nigel Stephens.
Signed-off-by Franck Bui-Huu <[email protected]>
--- arch/mips/kernel/process.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
arch/mips/kernel/process.c +5 -5
@@ -27,7 +27,6 @@#include <linux/kallsyms.h> #include <linux/random.h> -#include <asm/asm.h> #include <asm/bootinfo.h> #include <asm/cpu.h> #include <asm/dsp.h>
@@ -464,13 +463,14 @@ out: }/* -* Don't forget that the stack pointer must be aligned on a 8 bytes -* boundary for 32-bits ABI and 16 bytes for 64-bits ABI. +* The stack pointer must be aligned on a 8 bytes boundary for 32-bits +* ABI and 16 bytes for 64-bits ABI. To make things simple we force to +* the maximum alignment required by any ABI. */ unsigned long arch_align_stack (unsigned long sp) { -if (!(current->personality &ADDR_NO_RANDOMIZE ) && randomize_va_space) +if (current->flags &PF_RANDOMIZE ) sp -=get_random_int () & ~PAGE_MASK ; -return sp &ALMASK ; +return sp & ~0xf ; }
Signature · 1 line
1.5.2.3