Patch "x86/speculation: Simplify indirect_branch_prediction_barrier()" has been added to the 4.15-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
x86/speculation: Simplify indirect_branch_prediction_barrier()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86speculation_Simplify_indirect_branch_prediction_barrier().patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Subject: x86/speculation: Simplify indirect_branch_prediction_barrier()
From: Borislav Petkov [email protected]
Date: Sat Jan 27 16:24:34 2018 +0000
From: Borislav Petkov [email protected]
commit 64e16720ea0879f8ab4547e3b9758936d483909b
Make it all a function which does the WRMSR instead of having a hairy inline asm.
[dwmw2: export it, fix CONFIG_RETPOLINE issues]
--- arch/x86/include/asm/nospec-branch.h | 13 ++++--------- arch/x86/include/asm/processor.h | 3 +++ arch/x86/kernel/cpu/bugs.c | 6 ++++++ 3 files changed, 13 insertions(+), 9 deletions(-)
arch/x86/include/asm/nospec-branch.h +4 -9
@@ -164,15 +164,10 @@ static inline void vmexit_fill_RSB(void)static inline void indirect_branch_prediction_barrier (void ) { - asm volatile(ALTERNATIVE("", - "movl %[msr], %%ecx\n\t" - "movl %[val], %%eax\n\t" - "movl $0, %%edx\n\t" - "wrmsr", - X86_FEATURE_USE_IBPB) - : : [msr] "i" (MSR_IA32_PRED_CMD), - [val] "i" (PRED_CMD_IBPB) - : "eax", "ecx", "edx", "memory"); +alternative_input ("" , +"call __ibp_barrier" , +X86_FEATURE_USE_IBPB , +ASM_NO_INPUT_CLOBBER ("eax" ,"ecx" ,"edx" ,"memory" )); }#endif /* __ASSEMBLY__ */
arch/x86/include/asm/processor.h +3 -0
@@ -971,4 +971,7 @@ bool xen_set_default_idle(void);void stop_this_cpu (void *dummy);void df_debug (struct pt_regs *regs,long error_code); + +void __ibp_barrier (void ); +#endif /* _ASM_X86_PROCESSOR_H */
arch/x86/kernel/cpu/bugs.c +6 -0
@@ -311,3 +311,9 @@ ssize_t cpu_show_spectre_v2(struct devic spectre_v2_module_string()); }#endif + +void __ibp_barrier (void ) +{ +__wrmsr (MSR_IA32_PRED_CMD ,PRED_CMD_IBPB ,0 ); +} +EXPORT_SYMBOL_GPL (__ibp_barrier);
Patches currently in stable-queue which might be from [email protected] are
queue-4.15/x86pti_Do_not_enable_PTI_on_CPUs_which_are_not_vulnerable_to_Meltdown.patch queue-4.15/x86cpufeatures_Add_Intel_feature_bits_for_Speculation_Control.patch queue-4.15/x86alternative_Print_unadorned_pointers.patch queue-4.15/x86cpufeatures_Add_CPUID_7_EDX_CPUID_leaf.patch queue-4.15/x86bugs_Drop_one_mitigation_from_dmesg.patch queue-4.15/x86speculation_Simplify_indirect_branch_prediction_barrier().patch queue-4.15/x86nospec_Fix_header_guards_names.patch queue-4.15/x86retpoline_Simplify_vmexit_fill_RSB().patch queue-4.15/x86cpufeatures_Clean_up_Spectre_v2_related_CPUID_flags.patch