Messages in this thread Patch in this message | | | Date | Fri, 5 Apr 2019 13:19:56 -0700 | From | tip-bot for Baoquan He <> | Subject | [tip:x86/mm] x86/mm/KASLR: Reduce randomization granularity for 5-level paging to 1GB |
| |
Commit-ID: b569c18434987163a05f05a12cdf6a9975c55ff3 Gitweb: https://git.kernel.org/tip/b569c18434987163a05f05a12cdf6a9975c55ff3 Author: Baoquan He <bhe@redhat.com> AuthorDate: Fri, 8 Mar 2019 10:56:16 +0800 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Fri, 5 Apr 2019 22:13:52 +0200
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 --- arch/x86/mm/kaslr.c | 10 ++-------- 1 file 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; } }
| |