Thread (30 messages) 30 messages, 8 authors, 2018-12-13

Re: [PATCH v7 08/14] x86/ftrace: Use text_poke_*() infrastructure

From: Nadav Amit <hidden>
Date: 2018-12-06 00:06:37
Also in: linux-integrity, lkml

On Dec 4, 2018, at 5:34 PM, Nadav Amit [off-list ref] wrote:

A following patch is going to make module allocated memory
non-executable. This requires to modify ftrace and make the memory
executable again after it is configured.

In addition, this patch makes ftrace use the general text poking
infrastructure instead ftrace's homegrown text patching. This provides
the advantages of having slightly "safer" code patching and avoiding
races with module removal or other mechanisms that patch the kernel
code.

Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Nadav Amit <redacted>
---
arch/x86/kernel/ftrace.c | 74 +++++++++++++---------------------------
1 file changed, 23 insertions(+), 51 deletions(-)
Steven Rostedt pointed that using text_poke() instead of
probe_kernel_write() would introduce considerable overheads. Running:

  # time { echo function > current_tracer; } 

takes 0.24s without this patch and 0.7s with. I don’t know whether to
consider it “so bad”. Obviously we can introduce a batching mechanism and/or
do some micro-optimization (the latter will not buy us much though).

Anyhow, in the meanwhile Steven asked that we’ll leave out the changes in
this patch-set, excluding the set_memory_x() that we need after calling
module_alloc(), and consider them later.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help