Patch "arm64: SW PAN: Update saved ttbr0 value on enter_lazy_tlb" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
arm64: SW PAN: Update saved ttbr0 value on enter_lazy_tlb
to the 4.14-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-sw-pan-update-saved-ttbr0-value-on-enter_lazy_tlb.patch
and it can be found in the queue-4.14 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
d96cc49bff5a7735576cc6f6f111f875d101cec8Mon Sep 17 00:00:00 2001
From: Will Deacon <[email protected]>
Date: Wed, 6 Dec 2017 10:51:12 +0000
Subject: arm64: SW PAN: Update saved ttbr0 value on enter_lazy_tlb
From: Will Deacon <[email protected]>
commit d96cc49bff5a7735576cc6f6f111f875d101cec8 upstream.
enter_lazy_tlb is called when a kernel thread rides on the back of another mm, due to a context switch or an explicit call to unuse_mm where a call to switch_mm is elided.
In these cases, it's important to keep the saved ttbr value up to date with the active mm, otherwise we can end up with a stale value which points to a potentially freed page table.
This patch implements enter_lazy_tlb for arm64, so that the saved ttbr0 is kept up-to-date with the active mm for kernel threads.
--- arch/arm64/include/asm/mmu_context.h | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-)
arch/arm64/include/asm/mmu_context.h +10 -14
@@ -156,20 +156,6 @@ void check_and_switch_context(struct mm_#define init_new_context (tsk,mm) ({ atomic64_set(&(mm)->context.id, 0); 0; }) -/* -* This is called when "tsk" is about to enter lazy TLB mode. -* -* mm: describes the currently active mm context -* tsk: task which is entering lazy tlb -* cpu: cpu number which is entering lazy tlb -* -* tsk->mm will be NULL -*/ -static inline void -enter_lazy_tlb (struct mm_struct *mm,struct task_struct *tsk) -{ -} -#ifdef CONFIG_ARM64_SW_TTBR0_PAN static inline void update_saved_ttbr0 (struct task_struct *tsk,struct mm_struct *mm)
@@ -193,6 +179,16 @@ static inline void update_saved_ttbr0(st }#endif +static inline void +enter_lazy_tlb (struct mm_struct *mm,struct task_struct *tsk) +{ +/* +* We don't actually care about the ttbr0 mapping, so point it at the +* zero page. +*/ +update_saved_ttbr0 (tsk, &init_mm); +} +static inline void __switch_mm (struct mm_struct *next) {unsigned int cpu =smp_processor_id ();
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/arm64-sw-pan-update-saved-ttbr0-value-on-enter_lazy_tlb.patch queue-4.14/arm64-sw-pan-point-saved-ttbr0-at-the-zero-page-when-switching-to-init_mm.patch queue-4.14/arm64-fpsimd-prevent-registers-leaking-from-dead-tasks.patch