Commit 9d37c405 authored by Markos Chandras's avatar Markos Chandras Committed by Ralf Baechle

MIPS: kernel: scalls: Skip the syscall if denied by the seccomp filter

Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
Reviewed-by: default avatarPaul Burton <paul.burton@imgtec.com>
Reviewed-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6399/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 1225eb82
...@@ -120,6 +120,8 @@ syscall_trace_entry: ...@@ -120,6 +120,8 @@ syscall_trace_entry:
move a0, sp move a0, sp
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 2f # seccomp failed? Skip syscall
move t0, s0 move t0, s0
RESTORE_STATIC RESTORE_STATIC
lw a0, PT_R4(sp) # Restore argument registers lw a0, PT_R4(sp) # Restore argument registers
...@@ -138,7 +140,7 @@ syscall_trace_entry: ...@@ -138,7 +140,7 @@ syscall_trace_entry:
sw t1, PT_R0(sp) # save it for syscall restarting sw t1, PT_R0(sp) # save it for syscall restarting
1: sw v0, PT_R2(sp) # result 1: sw v0, PT_R2(sp) # result
j syscall_exit 2: j syscall_exit
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
......
...@@ -82,6 +82,8 @@ syscall_trace_entry: ...@@ -82,6 +82,8 @@ syscall_trace_entry:
move a0, sp move a0, sp
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 2f # seccomp failed? Skip syscall
move t0, s0 move t0, s0
RESTORE_STATIC RESTORE_STATIC
ld a0, PT_R4(sp) # Restore argument registers ld a0, PT_R4(sp) # Restore argument registers
...@@ -102,7 +104,7 @@ syscall_trace_entry: ...@@ -102,7 +104,7 @@ syscall_trace_entry:
sd t1, PT_R0(sp) # save it for syscall restarting sd t1, PT_R0(sp) # save it for syscall restarting
1: sd v0, PT_R2(sp) # result 1: sd v0, PT_R2(sp) # result
j syscall_exit 2: j syscall_exit
illegal_syscall: illegal_syscall:
/* This also isn't a 64-bit syscall, throw an error. */ /* This also isn't a 64-bit syscall, throw an error. */
......
...@@ -74,6 +74,8 @@ n32_syscall_trace_entry: ...@@ -74,6 +74,8 @@ n32_syscall_trace_entry:
move a0, sp move a0, sp
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 2f # seccomp failed? Skip syscall
move t0, s0 move t0, s0
RESTORE_STATIC RESTORE_STATIC
ld a0, PT_R4(sp) # Restore argument registers ld a0, PT_R4(sp) # Restore argument registers
...@@ -94,7 +96,7 @@ n32_syscall_trace_entry: ...@@ -94,7 +96,7 @@ n32_syscall_trace_entry:
sd t1, PT_R0(sp) # save it for syscall restarting sd t1, PT_R0(sp) # save it for syscall restarting
1: sd v0, PT_R2(sp) # result 1: sd v0, PT_R2(sp) # result
j syscall_exit 2: j syscall_exit
not_n32_scall: not_n32_scall:
/* This is not an n32 compatibility syscall, pass it on to /* This is not an n32 compatibility syscall, pass it on to
......
...@@ -114,6 +114,8 @@ trace_a_syscall: ...@@ -114,6 +114,8 @@ trace_a_syscall:
move a0, sp move a0, sp
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 2f # seccomp failed? Skip syscall
move t0, s0 move t0, s0
RESTORE_STATIC RESTORE_STATIC
ld a0, PT_R4(sp) # Restore argument registers ld a0, PT_R4(sp) # Restore argument registers
...@@ -136,7 +138,7 @@ trace_a_syscall: ...@@ -136,7 +138,7 @@ trace_a_syscall:
sd t1, PT_R0(sp) # save it for syscall restarting sd t1, PT_R0(sp) # save it for syscall restarting
1: sd v0, PT_R2(sp) # result 1: sd v0, PT_R2(sp) # result
j syscall_exit 2: j syscall_exit
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment