]> git.baikalelectronics.ru Git - kernel.git/commit
tracing/kprobes: Fix to check notrace function with correct range
authorMasami Hiramatsu <mhiramat@kernel.org>
Tue, 21 Aug 2018 13:04:57 +0000 (22:04 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 21 Aug 2018 13:41:12 +0000 (09:41 -0400)
commit5235a2deae0196aabf49784cbacc959cdd291423
tree0469cf6fa34e191b1d3fe8a8bd9c299fe4182e61
parentcb98d54b2edad0dd6794e52ec82d17bdbdbe3771
tracing/kprobes: Fix to check notrace function with correct range

Fix within_notrace_func() to check notrace function correctly.

Since the ftrace_location_range(start, end) function checks
the range inclusively (start <= ftrace-loc <= end), the end
address must not include the entry address of next function.

However, within_notrace_func() uses kallsyms_lookup_size_offset()
to get the function size and calculate the end address from
adding the size to the entry address. This means the end address
is the entry address of the next function.

In the result, within_notrace_func() fails to find notrace
function if the next function of the target function is
ftraced.

Let's subtract 1 from the end address so that ftrace_location_range()
can check it correctly.

Link: http://lkml.kernel.org/r/153485669706.16611.17726752296213785504.stgit@devbox
Fixes: commit 3d1c0e03b287 ("tracing: kprobes: Prohibit probing on notrace function")
Reported-by: Michael Rodin <michael@rodin.online>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace_kprobe.c