• Andy Lutomirski's avatar
    x86/entry/compat: Implement opportunistic SYSRETL for compat syscalls · 7841b408
    Andy Lutomirski authored
    If CS, SS and IP are as expected and FLAGS is compatible with
    SYSRETL, then return from fast compat syscalls (both SYSCALL and
    SYSENTER) using SYSRETL.
    
    Unlike native 64-bit opportunistic SYSRET, this is not invisible
    to user code: RCX and R8-R15 end up in a different state than
    shown saved in pt_regs.  To compensate, we only do this when
    returning to the vDSO fast syscall return path.  This won't
    interfere with syscall restart, as we won't use SYSRETL when
    returning to the INT80 restart instruction.
    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: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/aa15e49db33773eb10b73d73466b6d5466d7856a.1444091585.git.luto@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    7841b408
entry_64_compat.S 9.53 KB