diff options
author | Paul Brook <paul@codesourcery.com> | 2006-05-16 14:25:55 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-06-18 16:16:57 +0100 |
commit | 5247593c9634309d1b9f7b549495b8e5ad521688 (patch) | |
tree | b9744271e43b76b22a43fd70d09c4b2aa81aa95f /arch/arm/kernel | |
parent | 254a1564fb6f9242782f9a8e5d59a212424686e8 (diff) | |
download | op-kernel-dev-5247593c9634309d1b9f7b549495b8e5ad521688.zip op-kernel-dev-5247593c9634309d1b9f7b549495b8e5ad521688.tar.gz |
[ARM] 3335/1: Old-abi Thumb sys_syscall broken
Patch from Paul Brook
The old-abi sys_syscall syscall is broken when called from Thumb mode. It
assumes the syscall number is an Arm syscall number (ie. starts from
__NR_OABI_SYSCALL_BASE). In thumb mode syscall numbers start from zero.
The patch below fixes this by clearing the nigh bits of the syscall number
instead of inverting them. Technically this means we accept some invalid
syscall numbers, but I can't see how that could be a problem. The two sets of
numbers far apart that unimplemented syscalls should still be rejected.
Signed-off-by: Paul Brook <paul@codesourcery.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/entry-common.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index dbcb11a..b5bcebc 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -271,7 +271,7 @@ ENTRY(sys_call_table) @ r8 = syscall table .type sys_syscall, #function sys_syscall: - eor scno, r0, #__NR_OABI_SYSCALL_BASE + bic scno, r0, #__NR_OABI_SYSCALL_BASE cmp scno, #__NR_syscall - __NR_SYSCALL_BASE cmpne scno, #NR_syscalls @ check range stmloia sp, {r5, r6} @ shuffle args |