Thread (13 messages) flat view 13 messages, 6 authors, 2018-10-08

ARM: Call syscall_trace_exit even when system call skipped

From: Kees Cook <hidden>
Date: 2018-10-08 18:08:16

On Mon, Oct 8, 2018 at 4:00 AM, Eugene Syromyatnikov [off-list ref] wrote:
From: Timothy E Baldwin <redacted>

On at least x86 and ARM64, and as documented in the ptrace man page
a skipped system call will still cause a syscall exit ptrace stop.

Previous to this commit 32-bit ARM did not, resulting in strace
being confused when seccomp skips system calls.

This change also impacts programs that use ptrace to skip system calls.

Fixes: ad75b51459ae ("ARM: 7579/1: arch/allow a scno of -1 to not cause a SIGILL")
Signed-off-by: Timothy E Baldwin <redacted>
Signed-off-by: Eugene Syromyatnikov <redacted>
Reviewed-by: Kees Cook <redacted>
Tested-by: Kees Cook <redacted>
Tested-by: Eugene Syromyatnikov <redacted>
---
KernelVersion: 4.19-rc7
Did this actually make it into the patch tracker? I don't see it in Incoming...

-Kees
quoted hunk ↗ jump to hunk
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 746565a..0465d65 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -296,16 +296,15 @@ __sys_trace:
        cmp     scno, #-1                       @ skip the syscall?
        bne     2b
        add     sp, sp, #S_OFF                  @ restore stack
-       b       ret_slow_syscall

-__sys_trace_return:
-       str     r0, [sp, #S_R0 + S_OFF]!        @ save returned r0
+__sys_trace_return_nosave:
+       enable_irq_notrace
        mov     r0, sp
        bl      syscall_trace_exit
        b       ret_slow_syscall

-__sys_trace_return_nosave:
-       enable_irq_notrace
+__sys_trace_return:
+       str     r0, [sp, #S_R0 + S_OFF]!        @ save returned r0
        mov     r0, sp
        bl      syscall_trace_exit
        b       ret_slow_syscall
--
2.1.4


-- 
Kees Cook
Pixel Security
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help