Commit 6ed7ce89 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Liu Chuang
Browse files

tracing/kprobes: Do the notrace functions check without kprobes on ftrace

stable inclusion
from stable-v4.19.169
commit 4ec3187d17c6915f02e40b2c7b1f41d0fdda1eb4
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9093Z
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4ec3187d17c6915f02e40b2c7b1f41d0fdda1eb4

--------------------------------

commit 7bb83f6f upstream.

Enable the notrace function check on the architecture which doesn't
support kprobes on ftrace but support dynamic ftrace. This notrace
function check is not only for the kprobes on ftrace but also
sw-breakpoint based kprobes.
Thus there is no reason to limit this check for the arch which
supports kprobes on ftrace.

This also changes the dependency of Kconfig. Because kprobe event
uses the function tracer's address list for identifying notrace
function, if the CONFIG_DYNAMIC_FTRACE=n, it can not check whether
the target function is notrace or not.

Link: https://lkml.kernel.org/r/20210105065730.2634785-1-naveen.n.rao@linux.vnet.ibm.com
Link: https://lkml.kernel.org/r/161007957862.114704.4512260007555399463.stgit@devnote2



Cc: stable@vger.kernel.org
Fixes: 45408c4f ("tracing: kprobes: Prohibit probing on notrace function")
Acked-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarLiu Chuang <liuchuang40@huawei.com>
parent 3a28772f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -476,7 +476,7 @@ config KPROBE_EVENTS
config KPROBE_EVENTS_ON_NOTRACE
	bool "Do NOT protect notrace function from kprobe events"
	depends on KPROBE_EVENTS
	depends on KPROBES_ON_FTRACE
	depends on DYNAMIC_FTRACE
	default n
	help
	  This is only for the developers who want to debug ftrace itself
+1 −1
Original line number Diff line number Diff line
@@ -517,7 +517,7 @@ disable_trace_kprobe(struct trace_kprobe *tk, struct trace_event_file *file)
	return ret;
}

#if defined(CONFIG_KPROBES_ON_FTRACE) && \
#if defined(CONFIG_DYNAMIC_FTRACE) && \
	!defined(CONFIG_KPROBE_EVENTS_ON_NOTRACE)
static bool __within_notrace_func(unsigned long addr)
{