lkml.org 
[lkml]   [2021]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 200/251] parisc/entry: fix trace test in syscall exit path
    Date
    From: Sven Schnelle <svens@stackframe.org>

    commit 3ec18fc7831e7d79e2d536dd1f3bc0d3ba425e8a upstream.

    commit 8779e05ba8aa ("parisc: Fix ptrace check on syscall return")
    fixed testing of TI_FLAGS. This uncovered a bug in the test mask.
    syscall_restore_rfi is only used when the kernel needs to exit to
    usespace with single or block stepping and the recovery counter
    enabled. The test however used _TIF_SYSCALL_TRACE_MASK, which
    includes a lot of bits that shouldn't be tested here.

    Fix this by using TIF_SINGLESTEP and TIF_BLOCKSTEP directly.

    I encountered this bug by enabling syscall tracepoints. Both in qemu and
    on real hardware. As soon as i enabled the tracepoint (sys_exit_read,
    but i guess it doesn't really matter which one), i got random page
    faults in userspace almost immediately.

    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/parisc/kernel/entry.S | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/parisc/kernel/entry.S
    +++ b/arch/parisc/kernel/entry.S
    @@ -1850,7 +1850,7 @@ syscall_restore:

    /* Are we being ptraced? */
    LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
    - ldi _TIF_SYSCALL_TRACE_MASK,%r2
    + ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2
    and,COND(=) %r19,%r2,%r0
    b,n syscall_restore_rfi


    \
     
     \ /
      Last update: 2021-11-24 13:44    [W:4.152 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site