diff options
author | Dima Zavin <dima@android.com> | 2010-07-29 16:42:32 -0700 |
---|---|---|
committer | Dima Zavin <dima@android.com> | 2010-08-10 14:48:48 -0700 |
commit | 049a7464f34e2d8c73646d2571f1935f19ac694c (patch) | |
tree | 48458193a277045b4013b284c39d57277988a52f | |
parent | 750bc63a1a0ade99ed97cb5beb026ca944dc5c56 (diff) | |
download | common-archive/android-2.6.32.tar.gz |
ARM: only allow 26-bit user mode on CPUs that support itarchive/android-2.6.32
Change-Id: Ia79b3872d395ffe796dd9d564ae08f7c0d5bc49e
Reviewed-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Dima Zavin <dima@android.com>
-rw-r--r-- | arch/arm/include/asm/ptrace.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index bbecccda76d0..6674c42a1a27 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h @@ -150,7 +150,11 @@ struct pt_regs { */ static inline int valid_user_regs(struct pt_regs *regs) { - if (user_mode(regs) && (regs->ARM_cpsr & PSR_I_BIT) == 0) { + long mode = regs->ARM_cpsr & MODE_MASK; + + if (((mode == USR_MODE) || + ((elf_hwcap & HWCAP_26BIT) && (mode == USR26_MODE))) && + (regs->ARM_cpsr & PSR_I_BIT) == 0) { regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT); return 1; } |