History

x86/retpoline: Cleanup some #ifdefery

On it's own not much of a cleanup but it prepares for more/similar code.

Peter Zijlstra committed 4 years ago

Commit 369ae6f1 parent a883d623 files · +14 −9Browse files

Unified · Split

3 files
  1. arch/x86/include/asm/disabled-features.h +8 −1
  2. arch/x86/include/asm/nospec-branch.h +3 −4
  3. arch/x86/net/bpf_jit_comp.c +3 −4
arch/x86/include/asm/disabled-features.h+8−1
@@ -50,6 +50,13 @@ · 49 unmodified lines
5050 # define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))
5151 #endif
5252
53+#ifdef CONFIG_RETPOLINE
54+# define DISABLE_RETPOLINE 0
55+#else
56+# define DISABLE_RETPOLINE ((1 << (X86_FEATURE_RETPOLINE & 31)) | \
57+ (1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
58+#endif
59+
5360 #ifdef CONFIG_INTEL_IOMMU_SVM
5461 # define DISABLE_ENQCMD 0
5562 #else
@@ -82,7 +89,7 @@ · 26 unmodified lines
8289 #define DISABLED_MASK8 (DISABLE_TDX_GUEST)
8390 #define DISABLED_MASK9 (DISABLE_SGX)
8491 #define DISABLED_MASK10 0
85−#define DISABLED_MASK11 0
92+#define DISABLED_MASK11 (DISABLE_RETPOLINE)
8693 #define DISABLED_MASK12 0
8794 #define DISABLED_MASK13 0
8895 #define DISABLED_MASK14 0
arch/x86/include/asm/nospec-branch.h+3−4
@@ -120,17 +120,16 @@ · 119 unmodified lines
120120 _ASM_PTR " 999b\n\t" \
121121 ".popsection\n\t"
122122
123−#ifdef CONFIG_RETPOLINE
124−
125123 typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
124+extern retpoline_thunk_t __x86_indirect_thunk_array[];
125+
126+#ifdef CONFIG_RETPOLINE
126127
127128 #define GEN(reg) \
128129 extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;
129130 #include <asm/GEN-for-each-reg.h>
130131 #undef GEN
131132
132−extern retpoline_thunk_t __x86_indirect_thunk_array[];
133−
134133 #ifdef CONFIG_X86_64
135134
136135 /*
arch/x86/net/bpf_jit_comp.c+3−4
@@ -412,16 +412,15 @@ static void emit_indirect_jump(u8 **pprog, int reg, u8 *ip) · 411 unmodified lines
412412 {
413413 u8 *prog = *pprog;
414414
415−#ifdef CONFIG_RETPOLINE
416415 if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_LFENCE)) {
417416 EMIT_LFENCE();
418417 EMIT2(0xFF, 0xE0 + reg);
419418 } else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
420419 OPTIMIZER_HIDE_VAR(reg);
421420 emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);
422− } else
423−#endif
424− EMIT2(0xFF, 0xE0 + reg);
421+ } else {
422+ EMIT2(0xFF, 0xE0 + reg);
423+ }
425424
426425 *pprog = prog;
427426 }