lkml.org 
[lkml]   [2019]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 24/66] selftests/x86/mov_ss_trap: Fix the SYSENTER test
    Date
    From: Andy Lutomirski <luto@kernel.org>

    commit 8caa016bfc129f2c925d52da43022171d1d1de91 upstream.

    For reasons that I haven't quite fully diagnosed, running
    mov_ss_trap_32 on a 32-bit kernel results in an infinite loop in
    userspace. This appears to be because the hacky SYSENTER test
    doesn't segfault as desired; instead it corrupts the program state
    such that it infinite loops.

    Fix it by explicitly clearing EBP before doing SYSENTER. This will
    give a more reliable segfault.

    Fixes: 59c2a7226fc5 ("x86/selftests: Add mov_to_ss test")
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    tools/testing/selftests/x86/mov_ss_trap.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/tools/testing/selftests/x86/mov_ss_trap.c
    +++ b/tools/testing/selftests/x86/mov_ss_trap.c
    @@ -257,7 +257,8 @@ int main()
    err(1, "sigaltstack");
    sethandler(SIGSEGV, handle_and_longjmp, SA_RESETHAND | SA_ONSTACK);
    nr = SYS_getpid;
    - asm volatile ("mov %[ss], %%ss; SYSENTER" : "+a" (nr)
    + /* Clear EBP first to make sure we segfault cleanly. */
    + asm volatile ("xorl %%ebp, %%ebp; mov %[ss], %%ss; SYSENTER" : "+a" (nr)
    : [ss] "m" (ss) : "flags", "rcx"
    #ifdef __x86_64__
    , "r11"

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