diff options
| author | guoweikang <guoweikang.kernel@gmail.com> | 2024-11-20 13:27:49 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-12-09 10:41:01 +0100 |
| commit | 19cacabdd5a8487ae566cbecb4d03bcb038a067e (patch) | |
| tree | 6b3fcc66f078149a6ae23ec24a47b85546b106dd /kernel/trace | |
| parent | 29aa92f514bf5219315e9c9ee71fef608df5e56f (diff) | |
| download | linux-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.c | 3 |
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) |
