Re: [PATCH 00/22] x86, objtool: several fixes/improvements

From: Peter Zijlstra
Date: Mon Jul 15 2019 - 05:52:19 EST


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) <peterz@xxxxxxxxxxxxx>