• Dave Hansen's avatar
    x86/mm/pti: Disable global pages if PAGE_TABLE_ISOLATION=y · c313ec66
    Dave Hansen authored
    Global pages stay in the TLB across context switches.  Since all contexts
    share the same kernel mapping, these mappings are marked as global pages
    so kernel entries in the TLB are not flushed out on a context switch.
    
    But, even having these entries in the TLB opens up something that an
    attacker can use, such as the double-page-fault attack:
    
       http://www.ieee-security.org/TC/SP2013/papers/4977a191.pdf
    
    That means that even when PAGE_TABLE_ISOLATION switches page tables
    on return to user space the global pages would stay in the TLB cache.
    
    Disable global pages so that kernel TLB entries can be flushed before
    returning to user space. This way, all accesses to kernel addresses from
    userspace result in a TLB miss independent of the existence of a kernel
    mapping.
    
    Suppress global pages via the __supported_pte_mask. The user space
    mappings set PAGE_GLOBAL for the minimal kernel mappings which are
    required for entry/exit. These mappings are set up manually so the
    filtering does not take place.
    
    [ The __supported_pte_mask simplification was written by Thomas Gleixner. ]
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    c313ec66
init.c 24.9 KB