瀏覽代碼

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>
Andreas Schwab 16 年之前
父節點
當前提交
59e4c3a2fe
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      arch/powerpc/include/asm/elf.h

+ 2 - 1
arch/powerpc/include/asm/elf.h

@@ -258,7 +258,8 @@ do {								\
 # define elf_read_implies_exec(ex, exec_stk) (test_thread_flag(TIF_32BIT) ? \
 # define elf_read_implies_exec(ex, exec_stk) (test_thread_flag(TIF_32BIT) ? \
 		(exec_stk != EXSTACK_DISABLE_X) : 0)
 		(exec_stk != EXSTACK_DISABLE_X) : 0)
 #else 
 #else 
-# define SET_PERSONALITY(ex) set_personality(PER_LINUX)
+# define SET_PERSONALITY(ex) \
+  set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
 #endif /* __powerpc64__ */
 #endif /* __powerpc64__ */
 
 
 extern int dcache_bsize;
 extern int dcache_bsize;