• B
    x86/KASLR: Add virtual address choosing function · 071a7493
    Baoquan He 提交于
    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: NBaoquan He <bhe@redhat.com>
    [ Rewrote changelog, refactored slot calculation for readability. ]
    [ Renamed find_random_phys_addr() and size argument. ]
    Signed-off-by: NKees 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.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    071a7493
kaslr.c 14.5 KB