Re: [PATCH 2/2] x86/retpoline: Fix return buffer filling

From: Borislav Petkov
Date: Tue Feb 13 2018 - 06:21:57 EST


On Mon, Feb 12, 2018 at 04:04:22PM -0800, Andi Kleen wrote:
> From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>
> An earlier patch moved the RSB filling out of line, ending
> it with a return. This results in the return buffer filling
> only giving 15 instead of 16 usable returns because
> the return from fill_rsb already uses one up.

Or, we can get rid of the RET:

---
diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S
index 480edc3a5e03..359130ceaa64 100644
--- a/arch/x86/lib/retpoline.S
+++ b/arch/x86/lib/retpoline.S
@@ -91,7 +91,8 @@ GENERATE_THUNK(r15)

ENTRY(__fill_rsb)
STUFF_RSB RSB_FILL_LOOPS, %_ASM_SP
- ret
+ pop %_ASM_BX
+ jmp *%_ASM_BX
END(__fill_rsb)
EXPORT_SYMBOL_GPL(__fill_rsb)

@@ -99,6 +100,7 @@ EXPORT_SYMBOL_GPL(__fill_rsb)

ENTRY(__clear_rsb)
STUFF_RSB RSB_CLEAR_LOOPS, %_ASM_SP
- ret
+ pop %_ASM_BX
+ jmp *%_ASM_BX
END(__clear_rsb)
EXPORT_SYMBOL_GPL(__clear_rsb)

--
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.