• Tom Lendacky's avatar
    x86/mm, kexec: Fix memory corruption with SME on successive kexecs · 4e237903
    Tom Lendacky authored
    After issuing successive kexecs it was found that the SHA hash failed
    verification when booting the kexec'd kernel.  When SME is enabled, the
    change from using pages that were marked encrypted to now being marked as
    not encrypted (through new identify mapped page tables) results in memory
    corruption if there are any cache entries for the previously encrypted
    pages. This is because separate cache entries can exist for the same
    physical location but tagged both with and without the encryption bit.
    
    To prevent this, issue a wbinvd if SME is active before copying the pages
    from the source location to the destination location to clear any possible
    cache entry conflicts.
    Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
    Cc: <kexec@lists.infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/e7fb8610af3a93e8f8ae6f214cd9249adc0df2b4.1501186516.git.thomas.lendacky@amd.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    4e237903
machine_kexec_64.c 15.1 KB