summaryrefslogtreecommitdiff
path: root/arch/mips/kernel/scall64-64.S
diff options
context:
space:
mode:
authorMarkos Chandras <markos.chandras@imgtec.com>2014-01-22 14:40:03 (GMT)
committerRalf Baechle <ralf@linux-mips.org>2014-03-26 22:09:08 (GMT)
commit4c21b8fd8f146a22e1eaf92833a32e51f560e82a (patch)
tree4d784859ce5b207837ddb574e26264d78db33c74 /arch/mips/kernel/scall64-64.S
parent9d37c405ed7e4bb10798c37ef4e642b682425c4e (diff)
downloadlinux-4c21b8fd8f146a22e1eaf92833a32e51f560e82a.tar.xz
MIPS: seccomp: Handle indirect system calls (o32)
When userland uses syscall() to perform an indirect system call the actually system call that needs to be checked by the filter is on the first argument. The kernel code needs to handle this case by looking at the original syscall number in v0 and if it's NR_syscall, then it needs to examine the first argument to identify the real system call that will be executed. Similarly, we need to 'virtually' shift the syscall() arguments so the syscall_get_arguments() function can fetch the correct arguments for the indirect system call. Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Reviewed-by: James Hogan <james.hogan@imgtec.com> Reviewed-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/6404/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/scall64-64.S')
-rw-r--r--arch/mips/kernel/scall64-64.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
index 7f5d88b..dd99c328 100644
--- a/arch/mips/kernel/scall64-64.S
+++ b/arch/mips/kernel/scall64-64.S
@@ -80,6 +80,7 @@ syscall_trace_entry:
SAVE_STATIC
move s0, t2
move a0, sp
+ daddiu a1, v0, __NR_64_Linux
jal syscall_trace_enter
bltz v0, 2f # seccomp failed? Skip syscall