]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86/bugs: Expose x86_spec_ctrl_base directly
authorThomas Gleixner <tglx@linutronix.de>
Sat, 12 May 2018 18:49:16 +0000 (20:49 +0200)
committerBrian Maly <brian.maly@oracle.com>
Mon, 4 Jun 2018 17:35:22 +0000 (13:35 -0400)
x86_spec_ctrl_base is the system wide default value for the SPEC_CTRL MSR.
x86_spec_ctrl_get_default() returns x86_spec_ctrl_base and was intended to
prevent modification to that variable. Though the variable is read only
after init and globaly visible already.

Remove the function and export the variable instead.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Orabug: 28063992
CVE: CVE-2018-3639

(cherry picked from commit fa8ac498)
Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Conflicts:
arch/x86/include/asm/nospec-branch.h
arch/x86/include/asm/spec-ctrl.h
arch/x86/kernel/cpu/bugs.c
[Contextual changes: things weren't in the expected place]

Signed-off-by: Brian Maly <brian.maly@oracle.com>
arch/x86/include/asm/nospec-branch.h
arch/x86/include/asm/spec-ctrl.h
arch/x86/kernel/cpu/bugs_64.c
arch/x86/kernel/cpu/spec_ctrl.c

index 5bbf1e789557c3a463bc02d134bc3774c9e7a53e..182dc7bc88a692469dc9ddc1561bda391e6f2136 100644 (file)
@@ -172,16 +172,10 @@ enum spectre_v2_mitigation {
        SPECTRE_V2_IBRS_LFENCE,
 };
 
-/*
- * The Intel specification for the SPEC_CTRL MSR requires that we
- * preserve any already set reserved bits at boot time (e.g. for
- * future additions that this kernel is not currently aware of).
- * We then set any additional mitigation bits that we want
- * ourselves and always use this as the base for SPEC_CTRL.
- * We also use this when handling guest entry/exit as below.
- */
 extern void x86_spec_ctrl_set(u64);
-extern u64 x86_spec_ctrl_get_default(void);
+
+/* The Intel SPEC CTRL MSR base value cache */
+extern u64 x86_spec_ctrl_base;
 
 /* The Speculative Store Bypass disable variants */
 enum ssb_mitigation {
index 39cc7aba3af85df0827d6cdfd91845ae18b99aa1..1672ea544158dbf2fb2c5fdb4ba58c94c7a1014f 100644 (file)
@@ -47,9 +47,6 @@ void x86_spec_ctrl_restore_host(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl)
 extern u64 x86_amd_ls_cfg_base;
 extern u64 x86_amd_ls_cfg_ssbd_mask;
 
-/* The Intel SPEC CTRL MSR base value cache */
-extern u64 x86_spec_ctrl_base;
-
 static inline u64 ssbd_tif_to_spec_ctrl(u32 tifn)
 {
        BUILD_BUG_ON(TIF_SSBD < SPEC_CTRL_SSBD_SHIFT);
index b74889d16fa471fa184be6ef9a9b2b06f076bbf4..75138e7e623630ce3133195a00ecfebaf3444001 100644 (file)
@@ -254,16 +254,6 @@ void x86_spec_ctrl_set(u64 val)
 }
 EXPORT_SYMBOL_GPL(x86_spec_ctrl_set);
 
-u64 x86_spec_ctrl_get_default(void)
-{
-       u64 msrval = x86_spec_ctrl_base;
-
-       if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
-               msrval |= ssbd_tif_to_spec_ctrl(current_thread_info()->flags);
-       return msrval;
-}
-EXPORT_SYMBOL_GPL(x86_spec_ctrl_get_default);
-
 void
 x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool setguest)
 {
index 5cbc0945afbc2494ee12d02e8a02a5bf5894581c..57d495c31c320a3bc6007e01d85d098f575930de 100644 (file)
@@ -216,7 +216,7 @@ late_initcall(debugfs_spec_ctrl);
 void unprotected_firmware_begin(void)
 {
         if (retpoline_enabled() && ibrs_firmware) {
-               u64 val = x86_spec_ctrl_get_default() | SPEC_CTRL_FEATURE_ENABLE_IBRS;
+               u64 val = x86_spec_ctrl_base | SPEC_CTRL_FEATURE_ENABLE_IBRS;
 
                native_wrmsrl(MSR_IA32_SPEC_CTRL, val);
         } else {
@@ -232,7 +232,7 @@ EXPORT_SYMBOL_GPL(unprotected_firmware_begin);
 void unprotected_firmware_end(void)
 {
         if (retpoline_enabled() && ibrs_firmware) {
-               u64 val = x86_spec_ctrl_get_default();
+               u64 val = x86_spec_ctrl_base;
 
                native_wrmsrl(MSR_IA32_SPEC_CTRL, val);
         }