Skip to content

Commit e8efc08

Browse files
jpoimboebp3tk0v
authored andcommitted
x86/nospec: Refactor UNTRAIN_RET[_*]
Factor out the UNTRAIN_RET[_*] common bits into a helper macro. Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Acked-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/r/f06d45489778bd49623297af2a983eea09067a74.1693889988.git.jpoimboe@kernel.org
1 parent 0a3c491 commit e8efc08

1 file changed

Lines changed: 10 additions & 21 deletions

File tree

arch/x86/include/asm/nospec-branch.h

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -288,35 +288,24 @@
288288
* As such, this must be placed after every *SWITCH_TO_KERNEL_CR3 at a point
289289
* where we have a stack but before any RET instruction.
290290
*/
291-
.macro UNTRAIN_RET
291+
.macro __UNTRAIN_RET ibpb_feature, call_depth_insns
292292
#if defined(CONFIG_RETHUNK) || defined(CONFIG_CPU_IBPB_ENTRY)
293293
VALIDATE_UNRET_END
294294
ALTERNATIVE_3 "", \
295295
CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \
296-
"call entry_ibpb", X86_FEATURE_ENTRY_IBPB, \
297-
__stringify(RESET_CALL_DEPTH), X86_FEATURE_CALL_DEPTH
296+
"call entry_ibpb", \ibpb_feature, \
297+
__stringify(\call_depth_insns), X86_FEATURE_CALL_DEPTH
298298
#endif
299299
.endm
300300

301-
.macro UNTRAIN_RET_VM
302-
#if defined(CONFIG_RETHUNK) || defined(CONFIG_CPU_IBPB_ENTRY)
303-
VALIDATE_UNRET_END
304-
ALTERNATIVE_3 "", \
305-
CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \
306-
"call entry_ibpb", X86_FEATURE_IBPB_ON_VMEXIT, \
307-
__stringify(RESET_CALL_DEPTH), X86_FEATURE_CALL_DEPTH
308-
#endif
309-
.endm
301+
#define UNTRAIN_RET \
302+
__UNTRAIN_RET X86_FEATURE_ENTRY_IBPB, __stringify(RESET_CALL_DEPTH)
310303

311-
.macro UNTRAIN_RET_FROM_CALL
312-
#if defined(CONFIG_RETHUNK) || defined(CONFIG_CPU_IBPB_ENTRY)
313-
VALIDATE_UNRET_END
314-
ALTERNATIVE_3 "", \
315-
CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \
316-
"call entry_ibpb", X86_FEATURE_ENTRY_IBPB, \
317-
__stringify(RESET_CALL_DEPTH_FROM_CALL), X86_FEATURE_CALL_DEPTH
318-
#endif
319-
.endm
304+
#define UNTRAIN_RET_VM \
305+
__UNTRAIN_RET X86_FEATURE_IBPB_ON_VMEXIT, __stringify(RESET_CALL_DEPTH)
306+
307+
#define UNTRAIN_RET_FROM_CALL \
308+
__UNTRAIN_RET X86_FEATURE_ENTRY_IBPB, __stringify(RESET_CALL_DEPTH_FROM_CALL)
320309

321310

322311
.macro CALL_DEPTH_ACCOUNT

0 commit comments

Comments
 (0)