Commit 22208ac5 authored by Tony Luck's avatar Tony Luck
Browse files

[IA64] preserve personality flag bits across exec



In its <asm/elf.h> ia64 defines SET_PERSONALITY in a way that unconditionally
sets the personality of the current process to PER_LINUX, losing any flag bits
from the upper 3 bytes of current->personality.  This is wrong. Those bits are
intended to be inherited across exec (other code takes care of ensuring that
security sensitive bits like ADDR_NO_RANDOMIZE are not passed to unsuspecting
setuid/setgid applications).

Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent deb0c98c
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -201,7 +201,9 @@ extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
   relevant until we have real hardware to play with... */
   relevant until we have real hardware to play with... */
#define ELF_PLATFORM	NULL
#define ELF_PLATFORM	NULL


#define SET_PERSONALITY(ex)	set_personality(PER_LINUX)
#define SET_PERSONALITY(ex)	\
	set_personality((current->personality & ~PER_MASK) | PER_LINUX)

#define elf_read_implies_exec(ex, executable_stack)					\
#define elf_read_implies_exec(ex, executable_stack)					\
	((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0)
	((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0)