On Sun, 2018-01-14 at 14:12 -0800, H.J. Lu wrote: > Please use this GCC patch instead.
Building now; thanks. This is the kernel patch I'll test as soon as the compiler is done. It's slightly less horrid than the "clever" one I sent out earlier, but does still end up needing those _ASM_AX etc. macros in *addition* to the bare "ax" that goes in the symbol names. I'm not convinced we want to do this, but I'll defer to Linus. From 755f50731a99b0ce0890e478e6a2d6ebd647da15 Mon Sep 17 00:00:00 2001 From: David Woodhouse <d...@amazon.co.uk> Date: Sun, 14 Jan 2018 22:21:02 +0000 Subject: [PATCH] x86/retpoline: Switch thunk names to match final GCC patches At the last minute, they were switched from __x86_indirect_thunk_rax to __x86_indirect_thunk_ax without the 'r' or 'e' on the register name. This is not entirely an improvement, IMO. Signed-off-by: David Woodhouse <d...@amazon.co.uk> --- arch/x86/include/asm/asm-prototypes.h | 24 ++++++++++---------- arch/x86/lib/retpoline.S | 41 +++++++++++++++++------------------ 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h index 0927cdc4f946..df80478fb682 100644 --- a/arch/x86/include/asm/asm-prototypes.h +++ b/arch/x86/include/asm/asm-prototypes.h @@ -18,19 +18,7 @@ extern void cmpxchg8b_emu(void); #endif #ifdef CONFIG_RETPOLINE -#ifdef CONFIG_X86_32 -#define INDIRECT_THUNK(reg) extern asmlinkage void __x86_indirect_thunk_e ## reg(void); -#else -#define INDIRECT_THUNK(reg) extern asmlinkage void __x86_indirect_thunk_r ## reg(void); -INDIRECT_THUNK(8) -INDIRECT_THUNK(9) -INDIRECT_THUNK(10) -INDIRECT_THUNK(11) -INDIRECT_THUNK(12) -INDIRECT_THUNK(13) -INDIRECT_THUNK(14) -INDIRECT_THUNK(15) -#endif +#define INDIRECT_THUNK(reg) extern asmlinkage void __x86_indirect_thunk_ ## reg(void); INDIRECT_THUNK(ax) INDIRECT_THUNK(bx) INDIRECT_THUNK(cx) @@ -39,4 +27,14 @@ INDIRECT_THUNK(si) INDIRECT_THUNK(di) INDIRECT_THUNK(bp) INDIRECT_THUNK(sp) +#ifdef CONFIG_64BIT +INDIRECT_THUNK(r8) +INDIRECT_THUNK(r9) +INDIRECT_THUNK(r10) +INDIRECT_THUNK(r11) +INDIRECT_THUNK(r12) +INDIRECT_THUNK(r13) +INDIRECT_THUNK(r14) +INDIRECT_THUNK(r15) +#endif /* CONFIG_64BIT */ #endif /* CONFIG_RETPOLINE */ diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S index cb45c6cb465f..7da2c9035836 100644 --- a/arch/x86/lib/retpoline.S +++ b/arch/x86/lib/retpoline.S @@ -8,14 +8,14 @@ #include <asm/export.h> #include <asm/nospec-branch.h> -.macro THUNK reg - .section .text.__x86.indirect_thunk.\reg +.macro THUNK reg suffix + .section .text.__x86.indirect_thunk.\suffix -ENTRY(__x86_indirect_thunk_\reg) +ENTRY(__x86_indirect_thunk_\suffix) CFI_STARTPROC JMP_NOSPEC %\reg CFI_ENDPROC -ENDPROC(__x86_indirect_thunk_\reg) +ENDPROC(__x86_indirect_thunk_\suffix) .endm /* @@ -26,23 +26,22 @@ ENDPROC(__x86_indirect_thunk_\reg) * the simple and nasty way... */ #define EXPORT_THUNK(reg) EXPORT_SYMBOL(__x86_indirect_thunk_ ## reg) -#define GENERATE_THUNK(reg) THUNK reg ; EXPORT_THUNK(reg) +#define GENERATE_THUNK(reg, suffix) THUNK reg suffix; EXPORT_THUNK(suffix) -GENERATE_THUNK(_ASM_AX) -GENERATE_THUNK(_ASM_BX) -GENERATE_THUNK(_ASM_CX) -GENERATE_THUNK(_ASM_DX) -GENERATE_THUNK(_ASM_SI) -GENERATE_THUNK(_ASM_DI) -GENERATE_THUNK(_ASM_BP) -GENERATE_THUNK(_ASM_SP) +GENERATE_THUNK(_ASM_AX, ax) +GENERATE_THUNK(_ASM_BX, bx) +GENERATE_THUNK(_ASM_CX, cx) +GENERATE_THUNK(_ASM_DX, dx) +GENERATE_THUNK(_ASM_SI, si) +GENERATE_THUNK(_ASM_DI, di) +GENERATE_THUNK(_ASM_BP, bp) #ifdef CONFIG_64BIT -GENERATE_THUNK(r8) -GENERATE_THUNK(r9) -GENERATE_THUNK(r10) -GENERATE_THUNK(r11) -GENERATE_THUNK(r12) -GENERATE_THUNK(r13) -GENERATE_THUNK(r14) -GENERATE_THUNK(r15) +GENERATE_THUNK(r8, r8) +GENERATE_THUNK(r9, r9) +GENERATE_THUNK(r10, r10) +GENERATE_THUNK(r11, r11) +GENERATE_THUNK(r12, r12) +GENERATE_THUNK(r13, r13) +GENERATE_THUNK(r14, r14) +GENERATE_THUNK(r15, r15) #endif -- 2.14.3
smime.p7s
Description: S/MIME cryptographic signature