Re: [POC][RFC][PATCH 1/2] jump_function: Addition of new feature "jump_function"

From: Josh Poimboeuf
Date: Wed Oct 10 2018 - 16:16:19 EST


On Wed, Oct 10, 2018 at 02:56:08PM -0400, Steven Rostedt wrote:
> On Wed, 10 Oct 2018 13:33:30 -0500
> Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:
>
> > Re-reading your suggestion, I may have misunderstood what you're
> > suggesting here, but I'm thinking about doing something like what you
> > proposed earlier:
> >
> > GLOBAL(tramp)
> > jmp *current_func(%rip)
> > ENDPROC(tramp)
> >
> > That is, doing an indirect jump instead of the above direct jump, so
> > that any previous references to the trampoline would still work (and it
> > would also work during early boot).
> >
> > Though it should probably be a retpoline instead of an indirect jump.
>
> But do we care, as it only takes place during text_poke_bp() right?
>
> I don't think we need to worry about training trampoline branch
> prediction that can only be hit when something enables the jump.

Yeah, I guess it depends on if we'd expect anybody (or gcc) to get a
function pointer to the trampoline itself. I can just create a warning
for that in objtool.

--
Josh