[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200324160925.470421121@infradead.org>
Date: Tue, 24 Mar 2020 16:31:39 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: tglx@...utronix.de, jpoimboe@...hat.com
Cc: linux-kernel@...r.kernel.org, x86@...nel.org, peterz@...radead.org,
mhiramat@...nel.org, mbenes@...e.cz, brgerst@...il.com
Subject: [PATCH v3 26/26] objtool: Add STT_NOTYPE noinstr validation
Make sure to also check STT_NOTYPE symbols for noinstr violations.
Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
---
tools/objtool/check.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -2563,7 +2563,7 @@ static int validate_symbol(struct objtoo
return 1;
}
- if (sym->pfunc != sym || sym->alias != sym)
+ if ((sym->type == STT_FUNC && sym->pfunc != sym) || sym->alias != sym)
return 0;
insn = find_insn(file, sec, sym->offset);
@@ -2610,6 +2610,23 @@ static int validate_section(struct objto
warnings += validate_symbol(file, sec, func, &state);
}
+ if (state.noinstr) {
+ /*
+ * In vmlinux mode we will not run validate_unwind_hints() by
+ * default which means we'll not otherwise visit STT_NOTYPE
+ * symbols.
+ *
+ * In case of --duplicate mode, insn->visited will avoid actual
+ * duplicate work being done.
+ */
+ list_for_each_entry(func, &sec->symbol_list, list) {
+ if (func->type != STT_NOTYPE)
+ continue;
+
+ warnings += validate_symbol(file, sec, func, &state);
+ }
+ }
+
return warnings;
}
Powered by blists - more mailing lists