mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-07 17:49:54 +00:00
x86/bugs: Rename CONFIG_RETHUNK => CONFIG_MITIGATION_RETHUNK
Step 10/10 of the namespace unification of CPU mitigations related Kconfig options. [ mingo: Added one more case. ] Suggested-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Breno Leitao <leitao@debian.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20231121160740.1249350-11-leitao@debian.org
This commit is contained in:
parent
a033eec9a0
commit
0911b8c52c
@ -2462,7 +2462,7 @@ config FINEIBT
|
|||||||
|
|
||||||
config HAVE_CALL_THUNKS
|
config HAVE_CALL_THUNKS
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on CC_HAS_ENTRY_PADDING && RETHUNK && OBJTOOL
|
depends on CC_HAS_ENTRY_PADDING && MITIGATION_RETHUNK && OBJTOOL
|
||||||
|
|
||||||
config CALL_THUNKS
|
config CALL_THUNKS
|
||||||
def_bool n
|
def_bool n
|
||||||
@ -2505,7 +2505,7 @@ config MITIGATION_RETPOLINE
|
|||||||
branches. Requires a compiler with -mindirect-branch=thunk-extern
|
branches. Requires a compiler with -mindirect-branch=thunk-extern
|
||||||
support for full protection. The kernel may run slower.
|
support for full protection. The kernel may run slower.
|
||||||
|
|
||||||
config RETHUNK
|
config MITIGATION_RETHUNK
|
||||||
bool "Enable return-thunks"
|
bool "Enable return-thunks"
|
||||||
depends on MITIGATION_RETPOLINE && CC_HAS_RETURN_THUNK
|
depends on MITIGATION_RETPOLINE && CC_HAS_RETURN_THUNK
|
||||||
select OBJTOOL if HAVE_OBJTOOL
|
select OBJTOOL if HAVE_OBJTOOL
|
||||||
@ -2518,7 +2518,7 @@ config RETHUNK
|
|||||||
|
|
||||||
config MITIGATION_UNRET_ENTRY
|
config MITIGATION_UNRET_ENTRY
|
||||||
bool "Enable UNRET on kernel entry"
|
bool "Enable UNRET on kernel entry"
|
||||||
depends on CPU_SUP_AMD && RETHUNK && X86_64
|
depends on CPU_SUP_AMD && MITIGATION_RETHUNK && X86_64
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Compile the kernel with support for the retbleed=unret mitigation.
|
Compile the kernel with support for the retbleed=unret mitigation.
|
||||||
@ -2572,7 +2572,7 @@ config MITIGATION_IBRS_ENTRY
|
|||||||
|
|
||||||
config MITIGATION_SRSO
|
config MITIGATION_SRSO
|
||||||
bool "Mitigate speculative RAS overflow on AMD"
|
bool "Mitigate speculative RAS overflow on AMD"
|
||||||
depends on CPU_SUP_AMD && X86_64 && RETHUNK
|
depends on CPU_SUP_AMD && X86_64 && MITIGATION_RETHUNK
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Enable the SRSO mitigation needed on AMD Zen1-4 machines.
|
Enable the SRSO mitigation needed on AMD Zen1-4 machines.
|
||||||
|
|||||||
@ -22,7 +22,7 @@ RETPOLINE_VDSO_CFLAGS := -mretpoline
|
|||||||
endif
|
endif
|
||||||
RETPOLINE_CFLAGS += $(call cc-option,-mindirect-branch-cs-prefix)
|
RETPOLINE_CFLAGS += $(call cc-option,-mindirect-branch-cs-prefix)
|
||||||
|
|
||||||
ifdef CONFIG_RETHUNK
|
ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
RETHUNK_CFLAGS := -mfunction-return=thunk-extern
|
RETHUNK_CFLAGS := -mfunction-return=thunk-extern
|
||||||
RETPOLINE_CFLAGS += $(RETHUNK_CFLAGS)
|
RETPOLINE_CFLAGS += $(RETHUNK_CFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@ -42,7 +42,7 @@ CONFIG_EFI_STUB=y
|
|||||||
CONFIG_HZ_1000=y
|
CONFIG_HZ_1000=y
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_CRASH_DUMP=y
|
CONFIG_CRASH_DUMP=y
|
||||||
# CONFIG_RETHUNK is not set
|
# CONFIG_MITIGATION_RETHUNK is not set
|
||||||
CONFIG_HIBERNATION=y
|
CONFIG_HIBERNATION=y
|
||||||
CONFIG_PM_DEBUG=y
|
CONFIG_PM_DEBUG=y
|
||||||
CONFIG_PM_TRACE_RTC=y
|
CONFIG_PM_TRACE_RTC=y
|
||||||
|
|||||||
@ -57,7 +57,7 @@
|
|||||||
(1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
|
(1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
# define DISABLE_RETHUNK 0
|
# define DISABLE_RETHUNK 0
|
||||||
#else
|
#else
|
||||||
# define DISABLE_RETHUNK (1 << (X86_FEATURE_RETHUNK & 31))
|
# define DISABLE_RETHUNK (1 << (X86_FEATURE_RETHUNK & 31))
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
#ifdef __ASSEMBLY__
|
#ifdef __ASSEMBLY__
|
||||||
|
|
||||||
#if defined(CONFIG_RETHUNK) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO)
|
#if defined(CONFIG_MITIGATION_RETHUNK) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO)
|
||||||
#define RET jmp __x86_return_thunk
|
#define RET jmp __x86_return_thunk
|
||||||
#else /* CONFIG_MITIGATION_RETPOLINE */
|
#else /* CONFIG_MITIGATION_RETPOLINE */
|
||||||
#ifdef CONFIG_MITIGATION_SLS
|
#ifdef CONFIG_MITIGATION_SLS
|
||||||
@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
#else /* __ASSEMBLY__ */
|
#else /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#if defined(CONFIG_RETHUNK) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO)
|
#if defined(CONFIG_MITIGATION_RETHUNK) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO)
|
||||||
#define ASM_RET "jmp __x86_return_thunk\n\t"
|
#define ASM_RET "jmp __x86_return_thunk\n\t"
|
||||||
#else /* CONFIG_MITIGATION_RETPOLINE */
|
#else /* CONFIG_MITIGATION_RETPOLINE */
|
||||||
#ifdef CONFIG_MITIGATION_SLS
|
#ifdef CONFIG_MITIGATION_SLS
|
||||||
|
|||||||
@ -289,7 +289,7 @@
|
|||||||
* where we have a stack but before any RET instruction.
|
* where we have a stack but before any RET instruction.
|
||||||
*/
|
*/
|
||||||
.macro __UNTRAIN_RET ibpb_feature, call_depth_insns
|
.macro __UNTRAIN_RET ibpb_feature, call_depth_insns
|
||||||
#if defined(CONFIG_RETHUNK) || defined(CONFIG_MITIGATION_IBPB_ENTRY)
|
#if defined(CONFIG_MITIGATION_RETHUNK) || defined(CONFIG_MITIGATION_IBPB_ENTRY)
|
||||||
VALIDATE_UNRET_END
|
VALIDATE_UNRET_END
|
||||||
ALTERNATIVE_3 "", \
|
ALTERNATIVE_3 "", \
|
||||||
CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \
|
CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \
|
||||||
@ -328,7 +328,7 @@ extern retpoline_thunk_t __x86_indirect_thunk_array[];
|
|||||||
extern retpoline_thunk_t __x86_indirect_call_thunk_array[];
|
extern retpoline_thunk_t __x86_indirect_call_thunk_array[];
|
||||||
extern retpoline_thunk_t __x86_indirect_jump_thunk_array[];
|
extern retpoline_thunk_t __x86_indirect_jump_thunk_array[];
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
extern void __x86_return_thunk(void);
|
extern void __x86_return_thunk(void);
|
||||||
#else
|
#else
|
||||||
static inline void __x86_return_thunk(void) {}
|
static inline void __x86_return_thunk(void) {}
|
||||||
|
|||||||
@ -46,7 +46,7 @@
|
|||||||
#define ARCH_DEFINE_STATIC_CALL_TRAMP(name, func) \
|
#define ARCH_DEFINE_STATIC_CALL_TRAMP(name, func) \
|
||||||
__ARCH_DEFINE_STATIC_CALL_TRAMP(name, ".byte 0xe9; .long " #func " - (. + 4)")
|
__ARCH_DEFINE_STATIC_CALL_TRAMP(name, ".byte 0xe9; .long " #func " - (. + 4)")
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
#define ARCH_DEFINE_STATIC_CALL_NULL_TRAMP(name) \
|
#define ARCH_DEFINE_STATIC_CALL_NULL_TRAMP(name) \
|
||||||
__ARCH_DEFINE_STATIC_CALL_TRAMP(name, "jmp __x86_return_thunk")
|
__ARCH_DEFINE_STATIC_CALL_TRAMP(name, "jmp __x86_return_thunk")
|
||||||
#else
|
#else
|
||||||
|
|||||||
@ -769,7 +769,7 @@ void __init_or_module noinline apply_retpolines(s32 *start, s32 *end)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Rewrite the compiler generated return thunk tail-calls.
|
* Rewrite the compiler generated return thunk tail-calls.
|
||||||
@ -842,7 +842,7 @@ void __init_or_module noinline apply_returns(s32 *start, s32 *end)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void __init_or_module noinline apply_returns(s32 *start, s32 *end) { }
|
void __init_or_module noinline apply_returns(s32 *start, s32 *end) { }
|
||||||
#endif /* CONFIG_RETHUNK */
|
#endif /* CONFIG_MITIGATION_RETHUNK */
|
||||||
|
|
||||||
#else /* !CONFIG_MITIGATION_RETPOLINE || !CONFIG_OBJTOOL */
|
#else /* !CONFIG_MITIGATION_RETPOLINE || !CONFIG_OBJTOOL */
|
||||||
|
|
||||||
|
|||||||
@ -172,7 +172,7 @@ void arch_static_call_transform(void *site, void *tramp, void *func, bool tail)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(arch_static_call_transform);
|
EXPORT_SYMBOL_GPL(arch_static_call_transform);
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
/*
|
/*
|
||||||
* This is called by apply_returns() to fix up static call trampolines,
|
* This is called by apply_returns() to fix up static call trampolines,
|
||||||
* specifically ARCH_DEFINE_STATIC_CALL_NULL_TRAMP which is recorded as
|
* specifically ARCH_DEFINE_STATIC_CALL_NULL_TRAMP which is recorded as
|
||||||
|
|||||||
@ -127,7 +127,7 @@ SYM_CODE_END(__x86_indirect_jump_thunk_array)
|
|||||||
#undef GEN
|
#undef GEN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Be careful here: that label cannot really be removed because in
|
* Be careful here: that label cannot really be removed because in
|
||||||
@ -386,4 +386,4 @@ SYM_CODE_START(__x86_return_thunk)
|
|||||||
SYM_CODE_END(__x86_return_thunk)
|
SYM_CODE_END(__x86_return_thunk)
|
||||||
EXPORT_SYMBOL(__x86_return_thunk)
|
EXPORT_SYMBOL(__x86_return_thunk)
|
||||||
|
|
||||||
#endif /* CONFIG_RETHUNK */
|
#endif /* CONFIG_MITIGATION_RETHUNK */
|
||||||
|
|||||||
@ -263,7 +263,7 @@ objtool-args-$(CONFIG_HAVE_OBJTOOL_NOP_MCOUNT) += --mnop
|
|||||||
endif
|
endif
|
||||||
objtool-args-$(CONFIG_UNWINDER_ORC) += --orc
|
objtool-args-$(CONFIG_UNWINDER_ORC) += --orc
|
||||||
objtool-args-$(CONFIG_MITIGATION_RETPOLINE) += --retpoline
|
objtool-args-$(CONFIG_MITIGATION_RETPOLINE) += --retpoline
|
||||||
objtool-args-$(CONFIG_RETHUNK) += --rethunk
|
objtool-args-$(CONFIG_MITIGATION_RETHUNK) += --rethunk
|
||||||
objtool-args-$(CONFIG_MITIGATION_SLS) += --sls
|
objtool-args-$(CONFIG_MITIGATION_SLS) += --sls
|
||||||
objtool-args-$(CONFIG_STACK_VALIDATION) += --stackval
|
objtool-args-$(CONFIG_STACK_VALIDATION) += --stackval
|
||||||
objtool-args-$(CONFIG_HAVE_STATIC_CALL_INLINE) += --static-call
|
objtool-args-$(CONFIG_HAVE_STATIC_CALL_INLINE) += --static-call
|
||||||
|
|||||||
@ -57,7 +57,7 @@
|
|||||||
(1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
|
(1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_RETHUNK
|
#ifdef CONFIG_MITIGATION_RETHUNK
|
||||||
# define DISABLE_RETHUNK 0
|
# define DISABLE_RETHUNK 0
|
||||||
#else
|
#else
|
||||||
# define DISABLE_RETHUNK (1 << (X86_FEATURE_RETHUNK & 31))
|
# define DISABLE_RETHUNK (1 << (X86_FEATURE_RETHUNK & 31))
|
||||||
|
|||||||
@ -3980,7 +3980,7 @@ static int validate_retpoline(struct objtool_file *file)
|
|||||||
|
|
||||||
if (insn->type == INSN_RETURN) {
|
if (insn->type == INSN_RETURN) {
|
||||||
if (opts.rethunk) {
|
if (opts.rethunk) {
|
||||||
WARN_INSN(insn, "'naked' return found in RETHUNK build");
|
WARN_INSN(insn, "'naked' return found in MITIGATION_RETHUNK build");
|
||||||
} else
|
} else
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user