summaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2009-04-16 06:22:01 +0000
committerPaul Mackerras <paulus@samba.org>2009-04-22 14:56:34 +1000
commit59e4c3a2fe9cb1681bb2cff508ff79466f7585ba (patch)
tree38971238bec3a2d21b70ac16c2d1dea2afa628bc /arch/powerpc
parent24f1ce803c55f645429e6a7dd94763fbace84b0a (diff)
powerpc/32: Don't clobber personality flags on exec
Now that ppc32 implements address randomization it also wants to inherit personality flags like ADDR_NO_RANDOMIZE across exec, for things like `setarch ppc -R' to work. But the ppc32 version of SET_PERSONALITY forcefully sets PER_LINUX, clearing all personality flags. So be careful about preserving the flags. Signed-off-by: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/include/asm/elf.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
index 1a856b15226..087c22f1d36 100644
--- a/arch/powerpc/include/asm/elf.h
+++ b/arch/powerpc/include/asm/elf.h
@@ -258,7 +258,8 @@ do { \
# define elf_read_implies_exec(ex, exec_stk) (test_thread_flag(TIF_32BIT) ? \
(exec_stk != EXSTACK_DISABLE_X) : 0)
#else
-# define SET_PERSONALITY(ex) set_personality(PER_LINUX)
+# define SET_PERSONALITY(ex) \
+ set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
#endif /* __powerpc64__ */
extern int dcache_bsize;