diff options
author | Baoquan He <[email protected]> | 2019-03-08 10:56:16 +0800 |
---|---|---|
committer | Thomas Gleixner <[email protected]> | 2019-04-05 22:13:52 +0200 |
commit | b569c18434987163a05f05a12cdf6a9975c55ff3 (patch) | |
tree | 3f88695ffdb9aacd44e4546c1a521160e55767ea | |
parent | 0925dda5962e9b55e4d38a72eba93858f24bac41 (diff) |
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 <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Acked-by: Kirill A. Shutemov <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Link: https://lkml.kernel.org/r/[email protected]
-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; } } |