From bca5320cfad57f6d51d8b751a14bef9bd1be8ca2 Mon Sep 17 00:00:00 2001 From: Dima Zavin Date: Thu, 29 Jul 2010 16:42:32 -0700 Subject: [PATCH] ARM: only allow 26-bit user mode on CPUs that support it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If62616ee826b3786b9fc7a877bff5584e69f7173 Reviewed-by: Arve Hjønnevåg Signed-off-by: Dima Zavin --- arch/arm/include/asm/ptrace.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index bbecccda76d08..6674c42a1a275 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; }