mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/spec-ctrl: Disable retpolines with CET-IBT
CET-IBT depend on executing indirect branches for protections to apply.
Extend the clobber for CET-SS to all of CET.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit 6e3f36387d)
This commit is contained in:
1 parent
1bb2a88f0c
commit
631d8408bb
1 file changed
+4
-3
@@ -919,13 +919,14 @@ void __init init_speculation_mitigations(void)
|
||||
boot_cpu_has(X86_FEATURE_IBRS));
|
||||
|
||||
/*
|
||||
* First, disable the use of retpolines if Xen is using shadow stacks, as
|
||||
* they are incompatible.
|
||||
* First, disable the use of retpolines if Xen is using CET. Retpolines
|
||||
* are a ROP gadget so incompatbile with Shadow Stacks, while IBT depends
|
||||
* on executing indirect branches for the safety properties to apply.
|
||||
*
|
||||
* In the absence of retpolines, IBRS needs to be used for speculative
|
||||
* safety. All CET-capable hardware has efficient IBRS.
|
||||
*/
|
||||
if ( cpu_has_xen_shstk )
|
||||
if ( read_cr4() & X86_CR4_CET )
|
||||
{
|
||||
if ( !has_spec_ctrl )
|
||||
printk(XENLOG_WARNING "?!? CET active, but no MSR_SPEC_CTRL?\n");
|
||||
|
||||