From: tip-bot for Josh Poimboeuf <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, jpoimboe@redhat.com, hpa@zytor.com,
ndesaulniers@google.com, peterz@infradead.org, mingo@kernel.org,
linux-kernel@vger.kernel.org
Subject: [tip:core/urgent] objtool: Refactor function alias logic
Date: Thu, 18 Jul 2019 12:16:19 -0700 [thread overview]
Message-ID: <tip-e10cd8fe8ddfd28a172d2be57ae0e90c7f752e6a@git.kernel.org> (raw)
In-Reply-To: <26a99c31426540f19c9a58b9e10727c385a147bc.1563413318.git.jpoimboe@redhat.com>
Commit-ID: e10cd8fe8ddfd28a172d2be57ae0e90c7f752e6a
Gitweb: https://git.kernel.org/tip/e10cd8fe8ddfd28a172d2be57ae0e90c7f752e6a
Author: Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Wed, 17 Jul 2019 20:36:48 -0500
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 18 Jul 2019 21:01:07 +0200
objtool: Refactor function alias logic
- Add an alias check in validate_functions(). With this change, aliases
no longer need uaccess_safe set.
- Add an alias check in decode_instructions(). With this change, the
"if (!insn->func)" check is no longer needed.
- Don't create aliases for zero-length functions, as it can have
unexpected results. The next patch will spit out a warning for
zero-length functions anyway.
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/26a99c31426540f19c9a58b9e10727c385a147bc.1563413318.git.jpoimboe@redhat.com
---
tools/objtool/check.c | 16 +++++++++-------
tools/objtool/elf.c | 2 +-
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index d8a1ce80fded..3f8664b0e3f9 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -276,7 +276,7 @@ static int decode_instructions(struct objtool_file *file)
}
list_for_each_entry(func, &sec->symbol_list, list) {
- if (func->type != STT_FUNC)
+ if (func->type != STT_FUNC || func->alias != func)
continue;
if (!find_insn(file, sec, func->offset)) {
@@ -286,8 +286,7 @@ static int decode_instructions(struct objtool_file *file)
}
func_for_each_insn(file, func, insn)
- if (!insn->func)
- insn->func = func;
+ insn->func = func;
}
}
@@ -508,7 +507,7 @@ static void add_uaccess_safe(struct objtool_file *file)
if (!func)
continue;
- func->alias->uaccess_safe = true;
+ func->uaccess_safe = true;
}
}
@@ -1887,7 +1886,7 @@ static bool insn_state_match(struct instruction *insn, struct insn_state *state)
static inline bool func_uaccess_safe(struct symbol *func)
{
if (func)
- return func->alias->uaccess_safe;
+ return func->uaccess_safe;
return false;
}
@@ -2355,14 +2354,17 @@ static int validate_functions(struct objtool_file *file)
for_each_sec(file, sec) {
list_for_each_entry(func, &sec->symbol_list, list) {
- if (func->type != STT_FUNC || func->pfunc != func)
+ if (func->type != STT_FUNC)
+ continue;
+
+ if (func->pfunc != func || func->alias != func)
continue;
insn = find_insn(file, sec, func->offset);
if (!insn || insn->ignore || insn->visited)
continue;
- state.uaccess = func->alias->uaccess_safe;
+ state.uaccess = func->uaccess_safe;
ret = validate_branch(file, func, insn, state);
if (ret && backtrace)
diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index e18698262837..9194732a673d 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -278,7 +278,7 @@ static int read_symbols(struct elf *elf)
}
if (sym->offset == s->offset) {
- if (sym->len == s->len && alias == sym)
+ if (sym->len && sym->len == s->len && alias == sym)
alias = s;
if (sym->len >= s->len) {
next prev parent reply other threads:[~2019-07-18 19:16 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-18 1:36 [PATCH v2 00/22] x86, objtool: several fixes/improvements Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 01/22] x86/paravirt: Fix callee-saved function ELF sizes Josh Poimboeuf
2019-07-18 19:07 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 02/22] x86/kvm: Fix fastop function ELF metadata Josh Poimboeuf
2019-07-18 19:08 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 03/22] x86/kvm: Replace vmx_vmenter()'s call to kvm_spurious_fault() with UD2 Josh Poimboeuf
2019-07-18 8:17 ` Paolo Bonzini
2019-07-18 19:08 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 04/22] x86/kvm: Don't call kvm_spurious_fault() from .fixup Josh Poimboeuf
2019-07-18 8:22 ` Paolo Bonzini
2019-07-18 13:16 ` Sean Christopherson
2019-07-18 13:18 ` Paolo Bonzini
2019-07-18 14:12 ` Josh Poimboeuf
2019-07-18 14:13 ` Paolo Bonzini
2019-07-18 14:03 ` Josh Poimboeuf
2019-07-18 19:09 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 05/22] x86/entry: Fix thunk function ELF sizes Josh Poimboeuf
2019-07-18 19:10 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 06/22] x86/head/64: Annotate start_cpu0() as non-callable Josh Poimboeuf
2019-07-18 19:11 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 07/22] x86/uaccess: Remove ELF function annotation from copy_user_handle_tail() Josh Poimboeuf
2019-07-18 19:11 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 08/22] x86/uaccess: Don't leak AC flag into fentry from mcsafe_handle_tail() Josh Poimboeuf
2019-07-18 19:12 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 09/22] x86/uaccess: Remove redundant CLACs in getuser/putuser error paths Josh Poimboeuf
2019-07-18 19:13 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 10/22] bpf: Disable GCC -fgcse optimization for ___bpf_prog_run() Josh Poimboeuf
2019-07-18 19:14 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2020-04-29 21:51 ` BPF vs objtool again Josh Poimboeuf
2020-04-29 22:01 ` Arvind Sankar
2020-04-29 23:41 ` Alexei Starovoitov
2020-04-30 0:13 ` Josh Poimboeuf
2020-04-30 2:10 ` Alexei Starovoitov
2020-04-30 3:53 ` Josh Poimboeuf
2020-04-30 4:24 ` Alexei Starovoitov
2020-04-30 4:43 ` Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 11/22] objtool: Add mcsafe_handle_tail() to the uaccess safe list Josh Poimboeuf
2019-07-18 19:14 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 12/22] objtool: Track original function across branches Josh Poimboeuf
2019-07-18 19:15 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 13/22] objtool: Refactor function alias logic Josh Poimboeuf
2019-07-18 19:16 ` tip-bot for Josh Poimboeuf [this message]
2019-07-18 1:36 ` [PATCH v2 14/22] objtool: Warn on zero-length functions Josh Poimboeuf
2019-07-18 19:17 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 15/22] objtool: Change dead_end_function() to return boolean Josh Poimboeuf
2019-07-18 19:17 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 16/22] objtool: Do frame pointer check before dead end check Josh Poimboeuf
2019-07-18 19:18 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 17/22] objtool: Refactor sibling call detection logic Josh Poimboeuf
2019-07-18 19:19 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 18/22] objtool: Refactor jump table code Josh Poimboeuf
2019-07-18 19:20 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 19/22] objtool: Support repeated uses of the same C jump table Josh Poimboeuf
2019-07-18 19:20 ` [tip:core/urgent] " tip-bot for Jann Horn
2019-07-18 1:36 ` [PATCH v2 20/22] objtool: Fix seg fault on bad switch table entry Josh Poimboeuf
2019-07-18 19:21 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 21/22] objtool: convert insn type to enum Josh Poimboeuf
2019-07-18 19:22 ` [tip:core/urgent] objtool: Convert " tip-bot for Josh Poimboeuf
2019-07-18 1:36 ` [PATCH v2 22/22] objtool: Support conditional retpolines Josh Poimboeuf
2019-07-18 19:23 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf
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=tip-e10cd8fe8ddfd28a172d2be57ae0e90c7f752e6a@git.kernel.org \
--to=tipbot@zytor.com \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=ndesaulniers@google.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.