| Submitter | Andreas Schwab |
|---|---|
| Date | April 16, 2009, 4:22 p.m. |
| Message ID | <m27i1k8t7a.fsf@igel.home> |
| Download | mbox | patch |
| Permalink | /patch/26073/ |
| State | Accepted |
| Commit | 59e4c3a2fe9cb1681bb2cff508ff79466f7585ba |
| Delegated to: | Paul Mackerras |
| Headers | show |
Comments
From: Andreas Schwab <schwab@linux-m68k.org> Date: Thu, 16 Apr 2009 18:22:01 +0200 > 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> Grumble, sparc has the same bugs... thanks for finding this.
Patch
Index: linux-2.6.30-rc1/arch/powerpc/include/asm/elf.h =================================================================== --- linux-2.6.30-rc1.orig/arch/powerpc/include/asm/elf.h 2009-04-08 12:45:56.000000000 +0200 +++ linux-2.6.30-rc1/arch/powerpc/include/asm/elf.h 2009-04-12 14:24:06.000000000 +0200 @@ -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;
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> --- arch/powerpc/include/asm/elf.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)