From: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> As the comment says, there are systems that have PCIDs but no support for the INVPCID instruction to help flush individual PCIDs. Flushing the TLB on those systems is awkward, and even worse with KAISER. If faced with one of these when KAISER is enabled, we simply fall back as if we have no PCID support. However, there is a remnant in the code from trying to support these systems. Remove it, but leave the warning. Andy Lutomirski points out that the code that this removes has a hole that could leave entries from the kernel page tables tagged with the user asid, leaving them vulnerable to being used to weaken KASLR. Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> Cc: Moritz Lipp <moritz.lipp@xxxxxxxxxxxxxx> Cc: Daniel Gruss <daniel.gruss@xxxxxxxxxxxxxx> Cc: Michael Schwarz <michael.schwarz@xxxxxxxxxxxxxx> Cc: Richard Fellner <richard.fellner@xxxxxxxxxxxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Hugh Dickins <hughd@xxxxxxxxxx> Cc: x86@xxxxxxxxxx --- b/arch/x86/mm/tlb.c | 9 --------- 1 file changed, 9 deletions(-) diff -puN arch/x86/mm/tlb.c~kaiser-remove-unused-tlb-flush-code arch/x86/mm/tlb.c --- a/arch/x86/mm/tlb.c~kaiser-remove-unused-tlb-flush-code 2017-11-28 00:53:41.391460358 -0800 +++ b/arch/x86/mm/tlb.c 2017-11-28 00:55:28.084460092 -0800 @@ -127,15 +127,6 @@ static void flush_user_asid(pgd_t *pgd, invpcid_flush_single_context(user_asid(kern_asid)); } else { /* - * On systems with PCIDs, but no INVPCID, the only - * way to flush a PCID is a CR3 write. Note that - * we use the kernel page tables with the *user* - * ASID here. - */ - unsigned long user_asid_flush_cr3; - user_asid_flush_cr3 = build_cr3(pgd, user_asid(kern_asid)); - write_cr3(user_asid_flush_cr3); - /* * We do not use PCIDs with KAISER unless we also * have INVPCID. Getting here is unexpected. */ _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>