linux/arch/arm64
Will Deacon c83557859e arm64: kpti: Fix "kpti=off" when KASLR is enabled
Enabling KASLR forces the use of non-global page-table entries for kernel
mappings, as this is a decision that we have to make very early on before
mapping the kernel proper. When used in conjunction with the "kpti=off"
command-line option, it is possible to use non-global kernel mappings but
with the kpti trampoline disabled.

Since commit 09e3c22a86 ("arm64: Use a variable to store non-global
mappings decision"), arm64_kernel_unmapped_at_el0() reflects only the use of
non-global mappings and does not take into account whether the kpti
trampoline is enabled. This breaks context switching of the TPIDRRO_EL0
register for 64-bit tasks, where the clearing of the register is deferred to
the ret-to-user code, but it also breaks the ARM SPE PMU driver which
helpfully recommends passing "kpti=off" on the command line!

Report whether or not KPTI is actually enabled in
arm64_kernel_unmapped_at_el0() and check the 'arm64_use_ng_mappings' global
variable directly when determining the protection flags for kernel mappings.

Cc: Mark Brown <broonie@kernel.org>
Reported-by: Hongbo Yao <yaohongbo@huawei.com>
Tested-by: Hongbo Yao <yaohongbo@huawei.com>
Fixes: 09e3c22a86 ("arm64: Use a variable to store non-global mappings decision")
Signed-off-by: Will Deacon <will@kernel.org>
2020-03-19 08:28:43 +00:00
..
boot ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
configs ARM: SoC defconfig updates 2020-02-08 14:15:41 -08:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2020-01-28 15:38:56 -08:00
include arm64: kpti: Fix "kpti=off" when KASLR is enabled 2020-03-19 08:28:43 +00:00
kernel arm64: smp: fix crash_smp_send_stop() behaviour 2020-03-17 22:51:19 +00:00
kvm ARM: Cleanups and corner case fixes 2020-01-31 09:30:41 -08:00
lib Merge branch 'for-next/asm-annotations' into for-next/core 2020-01-22 11:34:21 +00:00
mm arm64: context: Fix ASID limit in boot messages 2020-03-02 12:10:38 +00:00
net arm64: bpf: optimize modulo operation 2019-09-03 15:44:40 +02:00
xen arm64: xen: Use modern annotations for assembly functions 2020-01-09 16:09:42 +00:00
Kbuild arm64: add arch/arm64/Kbuild 2019-08-21 18:47:15 +01:00
Kconfig asm-generic/tlb: rename HAVE_RCU_TABLE_FREE 2020-02-04 03:05:26 +00:00
Kconfig.debug arm64: mm: convert mm/dump.c to use walk_page_range() 2020-02-04 03:05:25 +00:00
Kconfig.platforms i.MX SoC update for 5.5: 2019-11-06 07:46:42 -08:00
Makefile arm64: Turn "broken gas inst" into real config option 2020-01-15 16:35:12 +00:00