diff options
author | Nicolas Pitre <nicolas.pitre@linaro.org> | 2011-04-13 06:01:52 +0200 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-04-14 10:15:25 +0200 |
commit | 88b9ef452690233d200abf57a3fa2c0f3bd874c5 (patch) | |
tree | e49e8a92b4377789198c144ba8bd973bc16c6d07 | |
parent | ARM: 6878/1: fix personality flag propagation across an exec (diff) | |
download | linux-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.c | 3 |
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; |