• Dave Hansen's avatar
    x86/mm: Undo double _PAGE_PSE clearing · 606c7193
    Dave Hansen authored
    When clearing _PAGE_PRESENT on a huge page, we need to be careful
    to also clear _PAGE_PSE, otherwise it might still get confused
    for a valid large page table entry.
    
    We do that near the spot where we *set* _PAGE_PSE.  That's fine,
    but it's unnecessary.  pgprot_large_2_4k() already did it.
    
    BTW, I also noticed that pgprot_large_2_4k() and
    pgprot_4k_2_large() are not symmetric.  pgprot_large_2_4k() clears
    _PAGE_PSE (because it is aliased to _PAGE_PAT) but
    pgprot_4k_2_large() does not put _PAGE_PSE back.  Bummer.
    
    Also, add some comments and change "promote" to "move".  "Promote"
    seems an odd word to move when we are logically moving a bit to a
    lower bit position.  Also add an extra line return to make it clear
    to which line the comment applies.
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180406205504.9B0F44A9@viggo.jf.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    606c7193
pageattr.c 49.7 KB