From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Borislav Petkov <bp@suse.de>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Alexei Starovoitov <ast@kernel.org>,
Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Subject: [PATCH 5.15 08/89] objtool,x86: Replace alternatives with .retpoline_sites
Date: Fri, 22 Jul 2022 11:10:42 +0200 [thread overview]
Message-ID: <20220722091133.839712315@linuxfoundation.org> (raw)
In-Reply-To: <20220722091133.320803732@linuxfoundation.org>
From: Peter Zijlstra <peterz@infradead.org>
commit 134ab5bd1883312d7a4b3033b05c6b5a1bb8889b upstream.
Instead of writing complete alternatives, simply provide a list of all
the retpoline thunk calls. Then the kernel is free to do with them as
it pleases. Simpler code all-round.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Borislav Petkov <bp@suse.de>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Tested-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/r/20211026120309.850007165@infradead.org
[cascardo: fixed conflict because of missing
8b946cc38e063f0f7bb67789478c38f6d7d457c9]
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kernel/vmlinux.lds.S | 14 +++
tools/objtool/arch/x86/decode.c | 120 --------------------------------
tools/objtool/check.c | 132 +++++++++++++++++++++++++-----------
tools/objtool/elf.c | 84 ----------------------
tools/objtool/include/objtool/elf.h | 1
tools/objtool/special.c | 8 --
6 files changed, 107 insertions(+), 252 deletions(-)
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -272,6 +272,20 @@ SECTIONS
__parainstructions_end = .;
}
+#ifdef CONFIG_RETPOLINE
+ /*
+ * List of instructions that call/jmp/jcc to retpoline thunks
+ * __x86_indirect_thunk_*(). These instructions can be patched along
+ * with alternatives, after which the section can be freed.
+ */
+ . = ALIGN(8);
+ .retpoline_sites : AT(ADDR(.retpoline_sites) - LOAD_OFFSET) {
+ __retpoline_sites = .;
+ *(.retpoline_sites)
+ __retpoline_sites_end = .;
+ }
+#endif
+
/*
* struct alt_inst entries. From the header (alternative.h):
* "Alternative instructions for different CPU types or capabilities"
--- a/tools/objtool/arch/x86/decode.c
+++ b/tools/objtool/arch/x86/decode.c
@@ -684,126 +684,6 @@ const char *arch_ret_insn(int len)
return ret[len-1];
}
-/* asm/alternative.h ? */
-
-#define ALTINSTR_FLAG_INV (1 << 15)
-#define ALT_NOT(feat) ((feat) | ALTINSTR_FLAG_INV)
-
-struct alt_instr {
- s32 instr_offset; /* original instruction */
- s32 repl_offset; /* offset to replacement instruction */
- u16 cpuid; /* cpuid bit set for replacement */
- u8 instrlen; /* length of original instruction */
- u8 replacementlen; /* length of new instruction */
-} __packed;
-
-static int elf_add_alternative(struct elf *elf,
- struct instruction *orig, struct symbol *sym,
- int cpuid, u8 orig_len, u8 repl_len)
-{
- const int size = sizeof(struct alt_instr);
- struct alt_instr *alt;
- struct section *sec;
- Elf_Scn *s;
-
- sec = find_section_by_name(elf, ".altinstructions");
- if (!sec) {
- sec = elf_create_section(elf, ".altinstructions",
- SHF_ALLOC, 0, 0);
-
- if (!sec) {
- WARN_ELF("elf_create_section");
- return -1;
- }
- }
-
- s = elf_getscn(elf->elf, sec->idx);
- if (!s) {
- WARN_ELF("elf_getscn");
- return -1;
- }
-
- sec->data = elf_newdata(s);
- if (!sec->data) {
- WARN_ELF("elf_newdata");
- return -1;
- }
-
- sec->data->d_size = size;
- sec->data->d_align = 1;
-
- alt = sec->data->d_buf = malloc(size);
- if (!sec->data->d_buf) {
- perror("malloc");
- return -1;
- }
- memset(sec->data->d_buf, 0, size);
-
- if (elf_add_reloc_to_insn(elf, sec, sec->sh.sh_size,
- R_X86_64_PC32, orig->sec, orig->offset)) {
- WARN("elf_create_reloc: alt_instr::instr_offset");
- return -1;
- }
-
- if (elf_add_reloc(elf, sec, sec->sh.sh_size + 4,
- R_X86_64_PC32, sym, 0)) {
- WARN("elf_create_reloc: alt_instr::repl_offset");
- return -1;
- }
-
- alt->cpuid = bswap_if_needed(cpuid);
- alt->instrlen = orig_len;
- alt->replacementlen = repl_len;
-
- sec->sh.sh_size += size;
- sec->changed = true;
-
- return 0;
-}
-
-#define X86_FEATURE_RETPOLINE ( 7*32+12)
-
-int arch_rewrite_retpolines(struct objtool_file *file)
-{
- struct instruction *insn;
- struct reloc *reloc;
- struct symbol *sym;
- char name[32] = "";
-
- list_for_each_entry(insn, &file->retpoline_call_list, call_node) {
-
- if (insn->type != INSN_JUMP_DYNAMIC &&
- insn->type != INSN_CALL_DYNAMIC)
- continue;
-
- if (!strcmp(insn->sec->name, ".text.__x86.indirect_thunk"))
- continue;
-
- reloc = insn->reloc;
-
- sprintf(name, "__x86_indirect_alt_%s_%s",
- insn->type == INSN_JUMP_DYNAMIC ? "jmp" : "call",
- reloc->sym->name + 21);
-
- sym = find_symbol_by_name(file->elf, name);
- if (!sym) {
- sym = elf_create_undef_symbol(file->elf, name);
- if (!sym) {
- WARN("elf_create_undef_symbol");
- return -1;
- }
- }
-
- if (elf_add_alternative(file->elf, insn, sym,
- ALT_NOT(X86_FEATURE_RETPOLINE), 5, 5)) {
- WARN("elf_add_alternative");
- return -1;
- }
- }
-
- return 0;
-}
-
int arch_decode_hint_reg(struct instruction *insn, u8 sp_reg)
{
struct cfi_reg *cfa = &insn->cfi.cfa;
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -533,6 +533,52 @@ static int create_static_call_sections(s
return 0;
}
+static int create_retpoline_sites_sections(struct objtool_file *file)
+{
+ struct instruction *insn;
+ struct section *sec;
+ int idx;
+
+ sec = find_section_by_name(file->elf, ".retpoline_sites");
+ if (sec) {
+ WARN("file already has .retpoline_sites, skipping");
+ return 0;
+ }
+
+ idx = 0;
+ list_for_each_entry(insn, &file->retpoline_call_list, call_node)
+ idx++;
+
+ if (!idx)
+ return 0;
+
+ sec = elf_create_section(file->elf, ".retpoline_sites", 0,
+ sizeof(int), idx);
+ if (!sec) {
+ WARN("elf_create_section: .retpoline_sites");
+ return -1;
+ }
+
+ idx = 0;
+ list_for_each_entry(insn, &file->retpoline_call_list, call_node) {
+
+ int *site = (int *)sec->data->d_buf + idx;
+ *site = 0;
+
+ if (elf_add_reloc_to_insn(file->elf, sec,
+ idx * sizeof(int),
+ R_X86_64_PC32,
+ insn->sec, insn->offset)) {
+ WARN("elf_add_reloc_to_insn: .retpoline_sites");
+ return -1;
+ }
+
+ idx++;
+ }
+
+ return 0;
+}
+
static int create_mcount_loc_sections(struct objtool_file *file)
{
struct section *sec;
@@ -863,6 +909,11 @@ static void annotate_call_site(struct ob
return;
}
+ if (sym->retpoline_thunk) {
+ list_add_tail(&insn->call_node, &file->retpoline_call_list);
+ return;
+ }
+
/*
* Many compilers cannot disable KCOV with a function attribute
* so they need a little help, NOP out any KCOV calls from noinstr
@@ -933,6 +984,39 @@ static void add_call_dest(struct objtool
annotate_call_site(file, insn, sibling);
}
+static void add_retpoline_call(struct objtool_file *file, struct instruction *insn)
+{
+ /*
+ * Retpoline calls/jumps are really dynamic calls/jumps in disguise,
+ * so convert them accordingly.
+ */
+ switch (insn->type) {
+ case INSN_CALL:
+ insn->type = INSN_CALL_DYNAMIC;
+ break;
+ case INSN_JUMP_UNCONDITIONAL:
+ insn->type = INSN_JUMP_DYNAMIC;
+ break;
+ case INSN_JUMP_CONDITIONAL:
+ insn->type = INSN_JUMP_DYNAMIC_CONDITIONAL;
+ break;
+ default:
+ return;
+ }
+
+ insn->retpoline_safe = true;
+
+ /*
+ * Whatever stack impact regular CALLs have, should be undone
+ * by the RETURN of the called function.
+ *
+ * Annotated intra-function calls retain the stack_ops but
+ * are converted to JUMP, see read_intra_function_calls().
+ */
+ remove_insn_ops(insn);
+
+ annotate_call_site(file, insn, false);
+}
/*
* Find the destination instructions for all jumps.
*/
@@ -955,19 +1039,7 @@ static int add_jump_destinations(struct
dest_sec = reloc->sym->sec;
dest_off = arch_dest_reloc_offset(reloc->addend);
} else if (reloc->sym->retpoline_thunk) {
- /*
- * Retpoline jumps are really dynamic jumps in
- * disguise, so convert them accordingly.
- */
- if (insn->type == INSN_JUMP_UNCONDITIONAL)
- insn->type = INSN_JUMP_DYNAMIC;
- else
- insn->type = INSN_JUMP_DYNAMIC_CONDITIONAL;
-
- list_add_tail(&insn->call_node,
- &file->retpoline_call_list);
-
- insn->retpoline_safe = true;
+ add_retpoline_call(file, insn);
continue;
} else if (insn->func) {
/* internal or external sibling call (with reloc) */
@@ -1096,18 +1168,7 @@ static int add_call_destinations(struct
add_call_dest(file, insn, dest, false);
} else if (reloc->sym->retpoline_thunk) {
- /*
- * Retpoline calls are really dynamic calls in
- * disguise, so convert them accordingly.
- */
- insn->type = INSN_CALL_DYNAMIC;
- insn->retpoline_safe = true;
-
- list_add_tail(&insn->call_node,
- &file->retpoline_call_list);
-
- remove_insn_ops(insn);
- continue;
+ add_retpoline_call(file, insn);
} else
add_call_dest(file, insn, reloc->sym, false);
@@ -1833,11 +1894,6 @@ static void mark_rodata(struct objtool_f
file->rodata = found;
}
-__weak int arch_rewrite_retpolines(struct objtool_file *file)
-{
- return 0;
-}
-
static int decode_sections(struct objtool_file *file)
{
int ret;
@@ -1906,15 +1962,6 @@ static int decode_sections(struct objtoo
if (ret)
return ret;
- /*
- * Must be after add_special_section_alts(), since this will emit
- * alternatives. Must be after add_{jump,call}_destination(), since
- * those create the call insn lists.
- */
- ret = arch_rewrite_retpolines(file);
- if (ret)
- return ret;
-
return 0;
}
@@ -3252,6 +3299,13 @@ int check(struct objtool_file *file)
goto out;
warnings += ret;
+ if (retpoline) {
+ ret = create_retpoline_sites_sections(file);
+ if (ret < 0)
+ goto out;
+ warnings += ret;
+ }
+
if (mcount) {
ret = create_mcount_loc_sections(file);
if (ret < 0)
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -944,90 +944,6 @@ static int elf_add_string(struct elf *el
return len;
}
-struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
-{
- struct section *symtab, *symtab_shndx;
- struct symbol *sym;
- Elf_Data *data;
- Elf_Scn *s;
-
- sym = malloc(sizeof(*sym));
- if (!sym) {
- perror("malloc");
- return NULL;
- }
- memset(sym, 0, sizeof(*sym));
-
- sym->name = strdup(name);
-
- sym->sym.st_name = elf_add_string(elf, NULL, sym->name);
- if (sym->sym.st_name == -1)
- return NULL;
-
- sym->sym.st_info = GELF_ST_INFO(STB_GLOBAL, STT_NOTYPE);
- // st_other 0
- // st_shndx 0
- // st_value 0
- // st_size 0
-
- symtab = find_section_by_name(elf, ".symtab");
- if (!symtab) {
- WARN("can't find .symtab");
- return NULL;
- }
-
- s = elf_getscn(elf->elf, symtab->idx);
- if (!s) {
- WARN_ELF("elf_getscn");
- return NULL;
- }
-
- data = elf_newdata(s);
- if (!data) {
- WARN_ELF("elf_newdata");
- return NULL;
- }
-
- data->d_buf = &sym->sym;
- data->d_size = sizeof(sym->sym);
- data->d_align = 1;
- data->d_type = ELF_T_SYM;
-
- sym->idx = symtab->sh.sh_size / sizeof(sym->sym);
-
- symtab->sh.sh_size += data->d_size;
- symtab->changed = true;
-
- symtab_shndx = find_section_by_name(elf, ".symtab_shndx");
- if (symtab_shndx) {
- s = elf_getscn(elf->elf, symtab_shndx->idx);
- if (!s) {
- WARN_ELF("elf_getscn");
- return NULL;
- }
-
- data = elf_newdata(s);
- if (!data) {
- WARN_ELF("elf_newdata");
- return NULL;
- }
-
- data->d_buf = &sym->sym.st_size; /* conveniently 0 */
- data->d_size = sizeof(Elf32_Word);
- data->d_align = 4;
- data->d_type = ELF_T_WORD;
-
- symtab_shndx->sh.sh_size += 4;
- symtab_shndx->changed = true;
- }
-
- sym->sec = find_section_by_index(elf, 0);
-
- elf_add_symbol(elf, sym);
-
- return sym;
-}
-
struct section *elf_create_section(struct elf *elf, const char *name,
unsigned int sh_flags, size_t entsize, int nr)
{
--- a/tools/objtool/include/objtool/elf.h
+++ b/tools/objtool/include/objtool/elf.h
@@ -143,7 +143,6 @@ int elf_write_insn(struct elf *elf, stru
unsigned long offset, unsigned int len,
const char *insn);
int elf_write_reloc(struct elf *elf, struct reloc *reloc);
-struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name);
int elf_write(struct elf *elf);
void elf_close(struct elf *elf);
--- a/tools/objtool/special.c
+++ b/tools/objtool/special.c
@@ -109,14 +109,6 @@ static int get_alt_entry(struct elf *elf
return -1;
}
- /*
- * Skip retpoline .altinstr_replacement... we already rewrite the
- * instructions for retpolines anyway, see arch_is_retpoline()
- * usage in add_{call,jump}_destinations().
- */
- if (arch_is_retpoline(new_reloc->sym))
- return 1;
-
reloc_to_sec_off(new_reloc, &alt->new_sec, &alt->new_off);
/* _ASM_EXTABLE_EX hack */
next prev parent reply other threads:[~2022-07-22 9:21 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 9:10 [PATCH 5.15 00/89] 5.15.57-rc1 review Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 01/89] x86/traps: Use pt_regs directly in fixup_bad_iret() Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 02/89] x86/entry: Switch the stack after error_entry() returns Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 03/89] x86/entry: Move PUSH_AND_CLEAR_REGS out of error_entry() Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 04/89] x86/entry: Dont call error_entry() for XENPV Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 05/89] objtool: Classify symbols Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 06/89] objtool: Explicitly avoid self modifying code in .altinstr_replacement Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 07/89] objtool: Shrink struct instruction Greg Kroah-Hartman
2022-07-22 9:10 ` Greg Kroah-Hartman [this message]
2022-07-22 9:10 ` [PATCH 5.15 09/89] objtool: Introduce CFI hash Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 10/89] x86/retpoline: Remove unused replacement symbols Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 11/89] x86/asm: Fix register order Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 12/89] x86/asm: Fixup odd GEN-for-each-reg.h usage Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 13/89] x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 14/89] x86/retpoline: Create a retpoline thunk array Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 15/89] x86/alternative: Implement .retpoline_sites support Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 16/89] x86/alternative: Handle Jcc __x86_indirect_thunk_\reg Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 17/89] x86/alternative: Try inline spectre_v2=retpoline,amd Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 18/89] x86/alternative: Add debug prints to apply_retpolines() Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 19/89] bpf,x86: Simplify computing label offsets Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 20/89] bpf,x86: Respect X86_FEATURE_RETPOLINE* Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 21/89] objtool: Default ignore INT3 for unreachable Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 22/89] x86/entry: Remove skip_r11rcx Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 23/89] x86/realmode: build with -D__DISABLE_EXPORTS Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 24/89] x86/kvm/vmx: Make noinstr clean Greg Kroah-Hartman
2022-07-22 9:10 ` [PATCH 5.15 25/89] x86/cpufeatures: Move RETPOLINE flags to word 11 Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 26/89] x86/retpoline: Cleanup some #ifdefery Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 27/89] x86/retpoline: Swizzle retpoline thunk Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 28/89] x86/retpoline: Use -mfunction-return Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 29/89] x86: Undo return-thunk damage Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 30/89] x86,objtool: Create .return_sites Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 31/89] objtool: skip non-text sections when adding return-thunk sites Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 32/89] x86,static_call: Use alternative RET encoding Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 33/89] x86/ftrace: " Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 34/89] x86/bpf: " Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 35/89] x86/kvm: Fix SETcc emulation for return thunks Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 36/89] x86/vsyscall_emu/64: Dont use RET in vsyscall emulation Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 37/89] x86/sev: Avoid using __x86_return_thunk Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 38/89] x86: Use return-thunk in asm code Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 39/89] x86/entry: Avoid very early RET Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 40/89] objtool: Treat .text.__x86.* as noinstr Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 41/89] x86: Add magic AMD return-thunk Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 42/89] x86/bugs: Report AMD retbleed vulnerability Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 43/89] x86/bugs: Add AMD retbleed= boot parameter Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 44/89] x86/bugs: Enable STIBP for JMP2RET Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 45/89] x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 46/89] x86/entry: Add kernel IBRS implementation Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 47/89] x86/bugs: Optimize SPEC_CTRL MSR writes Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 48/89] x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 49/89] x86/bugs: Split spectre_v2_select_mitigation() and spectre_v2_user_select_mitigation() Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 50/89] x86/bugs: Report Intel retbleed vulnerability Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 51/89] intel_idle: Disable IBRS during long idle Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 52/89] objtool: Update Retpoline validation Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 53/89] x86/xen: Rename SYS* entry points Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 54/89] x86/xen: Add UNTRAIN_RET Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 55/89] x86/bugs: Add retbleed=ibpb Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 56/89] x86/bugs: Do IBPB fallback check only once Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 57/89] objtool: Add entry UNRET validation Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 58/89] x86/cpu/amd: Add Spectral Chicken Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 59/89] x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 60/89] x86/speculation: Fix firmware entry SPEC_CTRL handling Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 61/89] x86/speculation: Fix SPEC_CTRL write on SMT state change Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 62/89] x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 63/89] x86/speculation: Remove x86_spec_ctrl_mask Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 64/89] objtool: Re-add UNWIND_HINT_{SAVE_RESTORE} Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 65/89] KVM: VMX: Flatten __vmx_vcpu_run() Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 66/89] KVM: VMX: Convert launched argument to flags Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 67/89] KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 68/89] KVM: VMX: Fix IBRS handling after vmexit Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 69/89] x86/speculation: Fill RSB on vmexit for IBRS Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 70/89] x86/common: Stamp out the stepping madness Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 71/89] x86/cpu/amd: Enumerate BTC_NO Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 72/89] x86/retbleed: Add fine grained Kconfig knobs Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 73/89] x86/bugs: Add Cannon lake to RETBleed affected CPU list Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 74/89] x86/entry: Move PUSH_AND_CLEAR_REGS() back into error_entry Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 75/89] x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 76/89] x86/kexec: Disable RET on kexec Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 77/89] x86/speculation: Disable RRSBA behavior Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 78/89] x86/static_call: Serialize __static_call_fixup() properly Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 79/89] x86/xen: Fix initialisation in hypercall_page after rethunk Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 80/89] x86/asm/32: Fix ANNOTATE_UNRET_SAFE use on 32-bit Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 81/89] x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 82/89] efi/x86: use naked RET on mixed mode call wrapper Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 83/89] x86/kvm: fix FASTOP_SIZE when return thunks are enabled Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 84/89] KVM: emulate: do not adjust size of fastop and setcc subroutines Greg Kroah-Hartman
2022-07-22 9:11 ` [PATCH 5.15 85/89] tools arch x86: Sync the msr-index.h copy with the kernel sources Greg Kroah-Hartman
2022-07-22 9:12 ` [PATCH 5.15 86/89] tools headers cpufeatures: Sync " Greg Kroah-Hartman
2022-07-22 9:12 ` [PATCH 5.15 87/89] x86/bugs: Remove apostrophe typo Greg Kroah-Hartman
2022-07-22 9:12 ` [PATCH 5.15 88/89] um: Add missing apply_returns() Greg Kroah-Hartman
2022-07-22 9:12 ` [PATCH 5.15 89/89] x86: Use -mindirect-branch-cs-prefix for RETPOLINE builds Greg Kroah-Hartman
2022-07-22 12:14 ` [PATCH 5.15 00/89] 5.15.57-rc1 review Bagas Sanjaya
2022-07-22 17:58 ` Florian Fainelli
2022-07-22 19:36 ` Naresh Kamboju
2022-07-22 21:59 ` Guenter Roeck
2022-07-23 4:21 ` Ron Economos
2022-07-23 8:55 ` Sudip Mukherjee (Codethink)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220722091133.839712315@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=ast@kernel.org \
--cc=bp@suse.de \
--cc=cascardo@canonical.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).