diff options
author | Baoquan He <bhe@redhat.com> | 2019-03-08 10:56:16 +0800 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-04-05 22:13:52 +0200 |
commit | b569c18434987163a05f05a12cdf6a9975c55ff3 (patch) | |
tree | 3f88695ffdb9aacd44e4546c1a521160e55767ea | |
parent | 0925dda5962e9b55e4d38a72eba93858f24bac41 (diff) | |
download | linux-b569c18434987163a05f05a12cdf6a9975c55ff3.tar.gz linux-b569c18434987163a05f05a12cdf6a9975c55ff3.tar.bz2 linux-b569c18434987163a05f05a12cdf6a9975c55ff3.zip |
x86/mm/KASLR: Reduce randomization granularity for 5-level paging to 1GB
The current randomization granularity of 5-level is 512 GB. The mapping of
the real mode trampoline has been reduced to one PUD entry, so there is no
restriction anymore.
Reduce the granularity to 1GB for 5-level paging mode which allows better
randomization.
[ tglx: Massaged changelog ]
Signed-off-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: dave.hansen@linux.intel.com
Cc: luto@kernel.org
Cc: peterz@infradead.org
Cc: bp@alien8.de
Cc: hpa@zytor.com
Cc: keescook@chromium.org
Cc: thgarnie@google.com
Link: https://lkml.kernel.org/r/20190308025616.21440-3-bhe@redhat.com
-rw-r--r-- | arch/x86/mm/kaslr.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/x86/mm/kaslr.c b/arch/x86/mm/kaslr.c index 97813751340d..f6ba2791eeb5 100644 --- a/arch/x86/mm/kaslr.c +++ b/arch/x86/mm/kaslr.c @@ -125,10 +125,7 @@ void __init kernel_randomize_memory(void) */ entropy = remain_entropy / (ARRAY_SIZE(kaslr_regions) - i); prandom_bytes_state(&rand_state, &rand, sizeof(rand)); - if (pgtable_l5_enabled()) - entropy = (rand % (entropy + 1)) & P4D_MASK; - else - entropy = (rand % (entropy + 1)) & PUD_MASK; + entropy = (rand % (entropy + 1)) & PUD_MASK; vaddr += entropy; *kaslr_regions[i].base = vaddr; @@ -137,10 +134,7 @@ void __init kernel_randomize_memory(void) * randomization alignment. */ vaddr += get_padding(&kaslr_regions[i]); - if (pgtable_l5_enabled()) - vaddr = round_up(vaddr + 1, P4D_SIZE); - else - vaddr = round_up(vaddr + 1, PUD_SIZE); + vaddr = round_up(vaddr + 1, PUD_SIZE); remain_entropy -= entropy; } } |