• Borislav Petkov's avatar
    x86/microcode/AMD: Fix more fallout from CONFIG_RANDOMIZE_MEMORY=y · 0d621c57
    Borislav Petkov authored
    commit 1c27f646 upstream.
    
    We needed the physical address of the container in order to compute the
    offset within the relocated ramdisk. And we did this by doing __pa() on
    the virtual address.
    
    However, __pa() does checks whether the physical address is within
    PAGE_OFFSET and __START_KERNEL_map - see __phys_addr() - which fail
    if we have CONFIG_RANDOMIZE_MEMORY enabled: we feed a virtual address
    which *doesn't* have the randomization offset into a function which uses
    PAGE_OFFSET which *does* have that offset.
    
    This makes this check fire:
    
    	VIRTUAL_BUG_ON((x > y) || !phys_addr_valid(x));
    			^^^^^^
    
    due to the randomization offset.
    
    The fix is as simple as using __pa_nodebug() because we do that
    randomization offset accounting later in that function ourselves.
    Reported-by: default avatarBob Peterson <rpeterso@redhat.com>
    Tested-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andreas Gruenbacher <agruenba@redhat.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Whitehouse <swhiteho@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm <linux-mm@kvack.org>
    Link: http://lkml.kernel.org/r/20161027123623.j2jri5bandimboff@pd.tnicSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0d621c57
amd.c 21.8 KB