Re: [PATCH 3/4] x86/ftrace: make ftrace_int3_handler() not to skip fops invocation

From: Steven Rostedt
Date: Mon Apr 29 2019 - 14:52:56 EST


On Mon, 29 Apr 2019 11:06:58 -0700
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> +void replace_call(void *addr, const void *opcode, size_t len, void *target)
> +{
> + bp_int3_call_target = target;
> + bp_int3_call_return = addr + len;
> + bp_int3_handler_irqoff = emulate_call_irqoff;
> + text_poke_bp(addr, opcode, len, emulate_call_irqon);
> +}

Note, the function tracer does not use text poke. It does it in batch
mode. It can update over 40,000 calls in one go:

add int3 breakpoint to all 40,000 call sites.
sync()
change the last four bytes of each of those call sites
sync()
remove int3 from the 40,000 call site with new call.

It's a bit more intrusive than the static call updates we were
discussing before.

-- Steve