lkml.org 
[lkml]   [2019]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 214/222] ARM: 8802/1: Call syscall_trace_exit even when system call skipped
    Date
    From: Timothy E Baldwin <T.E.Baldwin99@members.leeds.ac.uk>

    [ Upstream commit f18aef742c8fbd68e280dff0a63ba0ca6ee8ad85 ]

    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 <T.E.Baldwin99@members.leeds.ac.uk>
    Signed-off-by: Eugene Syromyatnikov <evgsyr@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Tested-by: Kees Cook <keescook@chromium.org>
    Tested-by: Eugene Syromyatnikov <evgsyr@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm/kernel/entry-common.S | 9 ++++-----
    1 file changed, 4 insertions(+), 5 deletions(-)

    diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
    index d69adfb3d79e6..178a2a9606595 100644
    --- a/arch/arm/kernel/entry-common.S
    +++ b/arch/arm/kernel/entry-common.S
    @@ -263,16 +263,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.20.1


    \
     
     \ /
      Last update: 2019-11-22 12:17    [W:4.187 / U:0.212 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site