[lkml]   [2016]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH 4.7 070/143] arm64: avoid TLB conflict with CONFIG_RANDOMIZE_BASE
4.7-stable review patch.  If anyone has any objections, please let me know.


From: Mark Rutland <>

commit fd363bd417ddb6103564c69cfcbd92d9a7877431 upstream.

When CONFIG_RANDOMIZE_BASE is selected, we modify the page tables to remap the
kernel at a newly-chosen VA range. We do this with the MMU disabled, but do not
invalidate TLBs prior to re-enabling the MMU with the new tables. Thus the old
mappings entries may still live in TLBs, and we risk violating
Break-Before-Make requirements, leading to TLB conflicts and/or other issues.

We invalidate TLBs when we uninsall the idmap in early setup code, but prior to
this we are subject to issues relating to the Break-Before-Make violation.

Avoid these issues by invalidating the TLBs before the new mappings can be
used by the hardware.

Fixes: f80fb3a3d508 ("arm64: add support for kernel ASLR")
Acked-by: Ard Biesheuvel <>
Acked-by: Will Deacon <>
Signed-off-by: Mark Rutland <>
Signed-off-by: Catalin Marinas <>
Signed-off-by: Greg Kroah-Hartman <>

arch/arm64/kernel/head.S | 3 +++
1 file changed, 3 insertions(+)

--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -757,6 +757,9 @@ ENTRY(__enable_mmu)
bl __create_page_tables // recreate kernel mapping

+ tlbi vmalle1 // Remove any stale TLB entries
+ dsb nsh
msr sctlr_el1, x19 // re-enable the MMU
ic iallu // flush instructions fetched

 \ /
  Last update: 2016-09-17 09:58    [W:0.336 / U:0.152 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site