Patch "arm64: kernel: avoid literal load of virtual address with MMU off" has been added to the 4.7-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
arm64: kernel: avoid literal load of virtual address with MMU off
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
arm64-kernel-avoid-literal-load-of-virtual-address-with-mmu-off.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bc9f3d7788a88d080a30599bde68f383daf8f8a5Mon Sep 17 00:00:00 2001
From: Ard Biesheuvel <[email protected]>
Date: Wed, 17 Aug 2016 17:54:41 +0200
Subject: arm64: kernel: avoid literal load of virtual address with MMU off
From: Ard Biesheuvel <[email protected]>
commit bc9f3d7788a88d080a30599bde68f383daf8f8a5 upstream.
Literal loads of virtual addresses are subject to runtime relocation when CONFIG_RELOCATABLE=y, and given that the relocation routines run with the MMU and caches enabled, literal loads of relocated values performed with the MMU off are not guaranteed to return the latest value unless the memory covering the literal is cleaned to the PoC explicitly.
So defer the literal load until after the MMU has been enabled, just like we do for primary_switch() and secondary_switch() in head.S.
--- arch/arm64/kernel/sleep.S | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
arch/arm64/kernel/sleep.S +9 -1
@@ -101,12 +101,20 @@ ENTRY(cpu_resume) bl el2_setup // if in EL2 drop to EL1 cleanly /* enable the MMU early - so we can access sleep_save_stash by va */ adr_l lr, __enable_mmu /* __cpu_setup will return here */ - ldr x27, =_cpu_resume /* __enable_mmu will branch here */ + adr_l x27, _resume_switched /* __enable_mmu will branch here */ adrp x25, idmap_pg_dir adrp x26, swapper_pg_dir b __cpu_setup ENDPROC(cpu_resume) + .pushsection ".idmap.text", "ax" +_resume_switched: + ldr x8, =_cpu_resume + br x8 +ENDPROC(_resume_switched) + .ltorg + .popsection + ENTRY(_cpu_resume) mrs x1, mpidr_el1 adrp x8, mpidr_hash
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/arm64-kernel-avoid-literal-load-of-virtual-address-with-mmu-off.patch queue-4.7/x86-platform-uv-skip-uv-runtime-services-mapping-in-the-efi_runtime_disabled-case.patch queue-4.7/arm64-avoid-tlb-conflict-with-config_randomize_base.patch queue-4.7/efi-capsule-allocate-whole-capsule-into-virtual-memory.patch