x86/nospec: Introduce CONFIG_SPECULATIVE_HARDEN_BRANCH

Just as with CONFIG_SPECULATIVE_HARDEN_ARRAY, branch hardening should be
configurable at compile time.

The previous CONFIG_HVM was a consequence of what could be discussed publicly
at the time the patches were submitted, and wasn't actually correct.  Later
patches will make further corrections.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Release-acked-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
Andrew Cooper committed 2019-10-30 13:07:25 +00:00
1 parent 8a74707a7c
commit 2d6f36daa0
2 files changed
+24 -1

No files matched your search

+23
View File
@@ -102,6 +102,29 @@ config SPECULATIVE_HARDEN_ARRAY
If unsure, say Y.
config SPECULATIVE_HARDEN_BRANCH
bool "Speculative Branch Hardening"
default y
depends on X86
---help---
Contemporary processors may use speculative execution as a
performance optimisation, but this can potentially be abused by an
attacker to leak data via speculative sidechannels.
One source of misbehaviour is by executing the wrong basic block
following a conditional jump.
When enabled, specific conditions which have been deemed liable to
be speculatively abused will be hardened to avoid entering the wrong
basic block.
This is a best-effort mitigation. There are no guarantees that all
areas of code open to abuse have been hardened, nor that
optimisations in the compiler haven't subverted the attempts to
harden.
If unsure, say Y.
endmenu
config KEXEC
+1 -1
View File
@@ -9,7 +9,7 @@
/* Allow to insert a read memory barrier into conditionals */
static always_inline bool barrier_nospec_true(void)
{
#ifdef CONFIG_HVM
#ifdef CONFIG_SPECULATIVE_HARDEN_BRANCH
alternative("", "lfence", X86_FEATURE_SC_L1TF_VULN);
#endif
return true;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.