summaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorLiang Cheng <licheng@nvidia.com>2011-11-18 13:51:40 -0600
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:50:13 -0800
commit4e6da2b12221784e83b4f4e078ef284d8b613d32 (patch)
tree76dbe9ad1b695a433a07f4798aa3363618f66717 /arch/arm/kernel
parent5283e352439ae5726421388aa3b260451d7a7ba9 (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.c17
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);