summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2011-04-13 06:01:52 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-04-14 10:15:25 +0200
commit88b9ef452690233d200abf57a3fa2c0f3bd874c5 (patch)
treee49e8a92b4377789198c144ba8bd973bc16c6d07
parentARM: 6878/1: fix personality flag propagation across an exec (diff)
downloadlinux-88b9ef452690233d200abf57a3fa2c0f3bd874c5.tar.xz
linux-88b9ef452690233d200abf57a3fa2c0f3bd874c5.zip
ARM: 6879/1: fix personality test wrt usage of domain handlers
There are optional bits that may complement a personality ID. It is therefore wrong to simply test against the absolute current->personality value to determine the effective personality. The PER_LINUX_32BIT is itself just PER_LINUX with one of those optional bits set. Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/kernel/traps.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index f0000e188c8c..3b54ad19d489 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -410,8 +410,7 @@ static int bad_syscall(int n, struct pt_regs *regs)
struct thread_info *thread = current_thread_info();
siginfo_t info;
- if (current->personality != PER_LINUX &&
- current->personality != PER_LINUX_32BIT &&
+ if ((current->personality & PER_MASK) != PER_LINUX &&
thread->exec_domain->handler) {
thread->exec_domain->handler(n, regs);
return regs->ARM_r0;