aboutsummaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2017-12-06 10:42:10 +0000
committerAlex Shi <alex.shi@linaro.org>2018-03-13 11:21:24 +0800
commita1f46b30020530e21fcfa1c45d572e16e40aa69b (patch)
tree48d701f677fda11f0909f6d28a749c73ae8fcb0b /firmware
parent8ab4646d94cfa23f0892331664374acee5763d02 (diff)
arm64: SW PAN: Point saved ttbr0 at the zero page when switching to init_mmv4.9/topic/PANemulation
update_saved_ttbr0 mandates that mm->pgd is not swapper, since swapper contains kernel mappings and should never be installed into ttbr0. However, this means that callers must avoid passing the init_mm to update_saved_ttbr0 which in turn can cause the saved ttbr0 value to be out-of-date in the context of the idle thread. For example, EFI runtime services may leave the saved ttbr0 pointing at the EFI page table, and kernel threads may end up with stale references to freed page tables. This patch changes update_saved_ttbr0 so that the init_mm points the saved ttbr0 value to the empty zero page, which always exists and never contains valid translations. EFI and switch can then call into update_saved_ttbr0 unconditionally. Cc: Mark Rutland <mark.rutland@arm.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Vinayak Menon <vinmenon@codeaurora.org> Cc: <stable@vger.kernel.org> Fixes: 39bc88e5e38e9b21 ("arm64: Disable TTBR0_EL1 during normal kernel execution") Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Mark Rutland <mark.rutland@arm.com> Reported-by: Vinayak Menon <vinmenon@codeaurora.org> Signed-off-by: Will Deacon <will.deacon@arm.com> (cherry picked from commit 0adbdfde8cfc9415aeed2a4955d2d17b3bd9bf13) Signed-off-by: Alex Shi <alex.shi@linaro.org>
Diffstat (limited to 'firmware')
0 files changed, 0 insertions, 0 deletions