summaryrefslogtreecommitdiff
path: root/kernel/trace
diff options
context:
space:
mode:
authorguoweikang <guoweikang.kernel@gmail.com>2024-11-20 13:27:49 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-12-09 10:41:01 +0100
commit19cacabdd5a8487ae566cbecb4d03bcb038a067e (patch)
tree6b3fcc66f078149a6ae23ec24a47b85546b106dd /kernel/trace
parent29aa92f514bf5219315e9c9ee71fef608df5e56f (diff)
downloadlinux-19cacabdd5a8487ae566cbecb4d03bcb038a067e.tar.gz
linux-19cacabdd5a8487ae566cbecb4d03bcb038a067e.tar.bz2
linux-19cacabdd5a8487ae566cbecb4d03bcb038a067e.zip
ftrace: Fix regression with module command in stack_trace_filter
commit 45af52e7d3b8560f21d139b3759735eead8b1653 upstream. When executing the following command: # echo "write*:mod:ext3" > /sys/kernel/tracing/stack_trace_filter The current mod command causes a null pointer dereference. While commit 0f17976568b3f ("ftrace: Fix regression with module command in stack_trace_filter") has addressed part of the issue, it left a corner case unhandled, which still results in a kernel crash. Cc: stable@vger.kernel.org Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/20241120052750.275463-1-guoweikang.kernel@gmail.com Fixes: 04ec7bb642b77 ("tracing: Have the trace_array hold the list of registered func probes"); Signed-off-by: guoweikang <guoweikang.kernel@gmail.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/ftrace.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index d2dd71d04b8a..3dd3b97d8049 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -5080,6 +5080,9 @@ ftrace_mod_callback(struct trace_array *tr, struct ftrace_hash *hash,
char *func;
int ret;
+ if (!tr)
+ return -ENODEV;
+
/* match_records() modifies func, and we need the original */
func = kstrdup(func_orig, GFP_KERNEL);
if (!func)