mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 05:44:11 +00:00
objtool: Track init section
For future usage of .init.text exclusion track the init section in the instruction decoder and use the result in retpoline validation. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20220915111145.910334431@infradead.org
This commit is contained in:
parent
61c6065ef7
commit
6644ee846c
2 changed files with 11 additions and 8 deletions
|
@ -382,6 +382,15 @@ static int decode_instructions(struct objtool_file *file)
|
|||
!strncmp(sec->name, ".text.__x86.", 12))
|
||||
sec->noinstr = true;
|
||||
|
||||
/*
|
||||
* .init.text code is ran before userspace and thus doesn't
|
||||
* strictly need retpolines, except for modules which are
|
||||
* loaded late, they very much do need retpoline in their
|
||||
* .init.text
|
||||
*/
|
||||
if (!strcmp(sec->name, ".init.text") && !opts.module)
|
||||
sec->init = true;
|
||||
|
||||
for (offset = 0; offset < sec->sh.sh_size; offset += insn->len) {
|
||||
insn = malloc(sizeof(*insn));
|
||||
if (!insn) {
|
||||
|
@ -3748,13 +3757,7 @@ static int validate_retpoline(struct objtool_file *file)
|
|||
if (insn->retpoline_safe)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* .init.text code is ran before userspace and thus doesn't
|
||||
* strictly need retpolines, except for modules which are
|
||||
* loaded late, they very much do need retpoline in their
|
||||
* .init.text
|
||||
*/
|
||||
if (!strcmp(insn->sec->name, ".init.text") && !opts.module)
|
||||
if (insn->sec->init)
|
||||
continue;
|
||||
|
||||
if (insn->type == INSN_RETURN) {
|
||||
|
|
|
@ -38,7 +38,7 @@ struct section {
|
|||
Elf_Data *data;
|
||||
char *name;
|
||||
int idx;
|
||||
bool changed, text, rodata, noinstr;
|
||||
bool changed, text, rodata, noinstr, init;
|
||||
};
|
||||
|
||||
struct symbol {
|
||||
|
|
Loading…
Reference in a new issue