Skip to content
  • Baoquan He's avatar
    x86/KASLR: Add virtual address choosing function · 071a7493
    Baoquan He authored
    
    
    To support randomizing the kernel virtual address separately from the
    physical address, this patch adds find_random_virt_addr() to choose
    a slot anywhere between LOAD_PHYSICAL_ADDR and KERNEL_IMAGE_SIZE.
    Since this address is virtual, not physical, we can place the kernel
    anywhere in this region, as long as it is aligned and (in the case of
    kernel being larger than the slot size) placed with enough room to load
    the entire kernel image.
    
    For clarity and readability, find_random_addr() is renamed to
    find_random_phys_addr() and has "size" renamed to "image_size" to match
    find_random_virt_addr().
    
    Signed-off-by: default avatarBaoquan He <bhe@redhat.com>
    [ Rewrote changelog, refactored slot calculation for readability. ]
    [ Renamed find_random_phys_addr() and size argument. ]
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: kernel-hardening@lists.openwall.com
    Cc: lasse.collin@tukaani.org
    Link: http://lkml.kernel.org/r/1462825332-10505-6-git-send-email-keescook@chromium.org
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    071a7493