Re: [RFC PATCH 00/11] Kernel FineIBT Support

Josh Poimboeuf
2022-04-20T15:17:27Z

On Wed, Apr 20, 2022 at 09:40:44AM +0200, Peter Zijlstra wrote:
> On Tue, Apr 19, 2022 at 05:42:30PM -0700, joao@overdrivepizza.com wrote:
> > @PeterZ @JoshP
> >
> > I'm a bit unaware of the details on why the objtool approach to bypass ENDBRs
> > was removed from the IBT series. Is this approach now sensible considering that
> > it is a requirement for a new/enhanced feature? If not, how extending the Linker
> > to emit already fixed offsets sounds like?
>
> Josh hates objtool modifying actualy code. He much prefers objtool only
> emits out of band data.
>
> Now, I did sneak in that jump_label nop'ing, and necessity (broken
> compilers) had us do the KCOV nop'ing in noinstr, but if you look at the
> recent objtool series here:
>
> https://lkml.kernel.org/r/cover.1650300597.git.jpoimboe@redhat.com
>
> you'll see his thoughs on that :-)
>
> Now, I obviously don't mind, it's easy enough to figure out what objtool
> actually does with something like:
>
> $ OBJTOOL_ARGS="--backup" make O=ibt-build/ -j$lots vmlinux
> $ objdiff.sh ibt-build/vmlinux.o
>
> Where objdiff.sh is the below crummy script.
>
> Now, one compromise that I did get out of Josh was that he objected less
> to rewriting relocations than to rewriting the immediates. From my
> testing the relocations got us the vast majority of direct call sites,
> very few are immediates.
>
> Josh, any way you might reconsider all that? :-)

If I remember correctly, the goal of --ibt-fix-direct was to avoid
hitting unnecessary ENDBRs, which basically decode to NOPs, so the
ghastly hack wasn't worth it.

If FineIBT needs it, I could reconsider. But I think there's a strong
case to be made that the linker should be doing that instead.

--
Josh