lkml.org 
[lkml]   [2014]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 0/2] x86_64,entry: Clear NT on entry and speed up switch_to
    On Tue, Sep 30, 2014 at 3:21 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
    > On Tue, 30 Sep 2014, Andy Lutomirski wrote:
    >> Anish Bhatt noticed that user programs can set RFLAGS.NT before
    >> syscall or sysenter, and the kernel entry code doesn't filter out
    >> NT. This causes kernel C code and, depending on thread flags, the
    >> exit slow path to run with NT set.
    >>
    >> The former is a little bit scary (imagine calling into EFI with NT
    >> set), and the latter will fail with #GP and send a spurious SIGSEGV.
    >>
    >> One answer would be "don't do that". But the kernel can do better
    >> here.
    >>
    >> These patches, which I'm not completely thrilled by, filter NT on
    >> all kernel entries. For syscall (both bitnesses), this is free.
    >> For sysenter, it costs 15 cycles or so. As a consolation prize, we
    >> can speed up context switches by avoiding saving and restoring flags.
    >
    > That's a nice reason not to do any of the other ugly variants.

    We could do something hideous:

    Don't filter NT in sysexit or on context switch. Instead, handle it
    in bad_iret.

    Up side: all common cases are maximally fast.

    Down side: Ugly. And malicious processes can leak NT, causing return
    to a different process to fault, thereby adding a thousand or two
    cycles (or possibly a lot more if the fault hits in the middle of
    espfix64. Egads.)

    This is not intended to be a serious suggestion...

    --Andy


    \
     
     \ /
      Last update: 2014-10-01 01:01    [W:2.504 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site