On Sun, Jul 14, 2019 at 07:36:55PM -0500, Josh Poimboeuf wrote: > There have been a lot of objtool bug reports lately, mainly related to > Clang and BPF. As part of fixing those bugs, I added some improvements > to objtool which uncovered yet more bugs (some kernel, some objtool). > > I've given these patches a lot of testing with both GCC and Clang. More > compile testing of objtool would be appreciated, as the kbuild test > robot doesn't seem to be paying much attention to my branches lately. > > There are still at least three outstanding issues: > > 1) With clang I see: > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: > .altinstr_replacement+0x88: redundant UACCESS disable > > I haven't dug into it yet. > > 2) There's also an issue in clang where a large switch table had a bunch > of unused (bad) entries. It's not a code correctness issue, but > hopefully it can get fixed in clang anyway. See patch 20/22 for more > details. > > 3) CONFIG_LIVEPATCH is causing some objtool "unreachable instruction" > warnings due to the new -flive-patching flag. I have some fixes > pending, but this patch set is already long enough. > > > Jann Horn (1): > objtool: Support repeated uses of the same C jump table > > Josh Poimboeuf (21): > x86/paravirt: Fix callee-saved function ELF sizes > x86/kvm: Fix fastop function ELF metadata > x86/kvm: Fix frame pointer usage in vmx_vmenter() > x86/kvm: Don't call kvm_spurious_fault() from .fixup > x86/entry: Fix thunk function ELF sizes > x86/head/64: Annotate start_cpu0() as non-callable > x86/uaccess: Remove ELF function annotation from > copy_user_handle_tail() > x86/uaccess: Don't leak AC flag into fentry from mcsafe_handle_tail() > x86/uaccess: Remove redundant CLACs in getuser/putuser error paths > bpf: Disable GCC -fgcse optimization for ___bpf_prog_run() > objtool: Add mcsafe_handle_tail() to the uaccess safe list > objtool: Track original function across branches > objtool: Refactor function alias logic > objtool: Warn on zero-length functions > objtool: Change dead_end_function() to return boolean > objtool: Do frame pointer check before dead end check > objtool: Refactor sibling call detection logic > objtool: Refactor jump table code > objtool: Fix seg fault on bad switch table entry > objtool: convert insn type to enum > objtool: Support conditional retpolines
Acked-by: Peter Zijlstra (Intel) <pet...@infradead.org>