• Andy Lutomirski's avatar
    x86/entry/64/compat: Fix bad fast syscall arg failure path · 5e99cb7c
    Andy Lutomirski authored
    If user code does SYSCALL32 or SYSENTER without a valid stack,
    then our attempt to determine the syscall args will result in a
    failed uaccess fault.  Previously, we would try to recover by
    jumping to the syscall exit code, but we'd run the syscall exit
    work even though we never made it to the syscall entry work.
    
    Clean it up by treating the failure path as a non-syscall entry
    and exit pair.
    
    This fixes strace's output when running the syscall_arg_fault
    test. Without this fix, strace would get out of sync and would
    fail to associate syscall entries with syscall exits.
    Signed-off-by: default avatarAndy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Denys Vlasenko <vda.linux@googlemail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: paulmck@linux.vnet.ibm.com
    Link: http://lkml.kernel.org/r/903010762c07a3d67df914fea2da84b52b0f8f1d.1435952415.git.luto@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    5e99cb7c
entry_64.S 39.1 KB