Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

x86/retbleed: Fix return thunk alignment

SYM_FUNC_START_LOCAL_NOALIGN() adds an endbr leading to this layout
(leaving only the last 2 bytes of the address):

3bff <zen_untrain_ret>:
3bff: f3 0f 1e fa endbr64
3c03: f6 test $0xcc,%bl

3c04 <__x86_return_thunk>:
3c04: c3 ret
3c05: cc int3
3c06: 0f ae e8 lfence

However, "the RET at __x86_return_thunk must be on a 64 byte boundary,
for alignment within the BTB."

Use SYM_START instead.

Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Borislav Petkov (AMD) and committed by
Linus Torvalds
9a48d604 76c7f887

+2 -2
+2 -2
arch/x86/lib/retpoline.S
··· 144 144 */ 145 145 .align 64 146 146 .skip 63, 0xcc 147 - SYM_FUNC_START_NOALIGN(zen_untrain_ret); 148 - 147 + SYM_START(zen_untrain_ret, SYM_L_GLOBAL, SYM_A_NONE) 148 + ANNOTATE_NOENDBR 149 149 /* 150 150 * As executed from zen_untrain_ret, this is: 151 151 *