Improve defense against branch predictor target injection (Spectre "variant 2")
authorkettenis <kettenis@openbsd.org>
Mon, 15 Jan 2018 14:11:16 +0000 (14:11 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 15 Jan 2018 14:11:16 +0000 (14:11 +0000)
commit539a71cba0b68b136c6ce3fc7e39370b555408b0
treeaacfe125c5a2a6650056212fd5df3e3f445a64b1
parent6348db95fee38838b8a1c84da21c8ca561ba9538
Improve defense against branch predictor target injection (Spectre "variant 2")
attacks.  OpenBSD/armv7 is already in pretty good shape as we have always
been flushing the branch predictor cache on context switches.  This diff adds
additional flushes to page faults in kernel address space.  The impact on
performance should be minimal as these page faults should only happen when
userland (deliberately or accidentally) tries to access kernel addres space
which would lead to a fatal signal (SIGSEGV or SIGBUS).

Loosely based on changes made by Marc Zyngier in Linux and based on
information in Arm Trusted Firmware Security Advisory TFV 6.

Note that for Cortex-A15 (and Cortex-A72) you will need firmware that sets
the ACTRL[0] bit for this diff to be effective.  Also note that with this
diff Cortex-A57 is still vulnerable.

ok jsg@
sys/arch/arm/arm/cpu.c
sys/arch/arm/arm/cpufunc_asm_armv7.S
sys/arch/arm/arm/fault.c
sys/arch/arm/include/cpu.h
sys/arch/arm/include/cpufunc.h