diff options
author | Liang Cheng <licheng@nvidia.com> | 2011-11-18 13:51:40 -0600 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:50:13 -0800 |
commit | 4e6da2b12221784e83b4f4e078ef284d8b613d32 (patch) | |
tree | 76dbe9ad1b695a433a07f4798aa3363618f66717 /arch/arm/kernel | |
parent | 5283e352439ae5726421388aa3b260451d7a7ba9 (diff) |
ARM: Revert "ARM: 6878/1: fix personality flag propagation across an exec"
This reverts commit 5e143436d04465c937c1a242808a99c46393af3e.
gdbserver has READ_IMPLIES_EXEC bit set, which propagtes to the
exec under debug. This results in application failing to run in
some cases. Revert the change to address this issue.
bug 894472
Change-Id: I9f856f50c94e61ac59beaf9c8f257899d1964d86
Reviewed-on: http://git-master/r/65550
Reviewed-by: Antoine Chauveau <achauveau@nvidia.com>
Tested-by: Liang Cheng (SW) <licheng@nvidia.com>
Reviewed-by: Simo Melenius <smelenius@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Rebase-Id: R9f68ba30084adbc2b5d6818eed2ee8ce2baffe69
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/elf.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index 9b05c6a0dcea..d4a0da1e48f4 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c @@ -40,22 +40,15 @@ EXPORT_SYMBOL(elf_check_arch); void elf_set_personality(const struct elf32_hdr *x) { unsigned int eflags = x->e_flags; - unsigned int personality = current->personality & ~PER_MASK; - - /* - * We only support Linux ELF executables, so always set the - * personality to LINUX. - */ - personality |= PER_LINUX; + unsigned int personality = PER_LINUX_32BIT; /* * APCS-26 is only valid for OABI executables */ - if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN && - (eflags & EF_ARM_APCS_26)) - personality &= ~ADDR_LIMIT_32BIT; - else - personality |= ADDR_LIMIT_32BIT; + if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN) { + if (eflags & EF_ARM_APCS_26) + personality = PER_LINUX; + } set_personality(personality); |