• Andy Lutomirski's avatar
    x86/fault: Fix SMAP #PF handling buglet for implicit supervisor accesses · e50928d7
    Andy Lutomirski authored
    Currently, if a user program somehow triggers an implicit supervisor
    access to a user address (e.g. if the kernel somehow sets LDTR to a
    user address), it will be incorrectly detected as a SMAP violation
    if AC is clear and SMAP is enabled.  This is incorrect -- the error
    has nothing to do with SMAP.  Fix the condition so that only
    accesses with the hardware USER bit set are diagnosed as SMAP
    violations.
    
    With the logic fixed, an implicit supervisor access to a user address
    will hit the code lower in the function that is intended to handle it
    even if SMAP is enabled.  That logic is still a bit buggy, and later
    patches will clean it up.
    
    I *think* this code is still correct for WRUSS, and I've added a
    comment to that effect.
    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: Dave Hansen <dave.hansen@linux.intel.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: Rik van Riel <riel@surriel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yu-cheng Yu <yu-cheng.yu@intel.com>
    Link: http://lkml.kernel.org/r/d1d1b2e66ef31f884dba172084486ea9423ddcdb.1542667307.git.luto@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    e50928d7
fault.c 38.5 KB