From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
stable@vger.kernel.org, Xiu Jianfeng <xiujianfeng@huawei.com>
Subject: [for-linus][PATCH 08/13] ftrace: Fix null pointer dereference in ftrace_add_mod()
Date: Sun, 20 Nov 2022 15:07:08 -0500 [thread overview]
Message-ID: <20221120200734.707886372@goodmis.org> (raw)
In-Reply-To: 20221120200700.725968899@goodmis.org
From: Xiu Jianfeng <xiujianfeng@huawei.com>
The @ftrace_mod is allocated by kzalloc(), so both the members {prev,next}
of @ftrace_mode->list are NULL, it's not a valid state to call list_del().
If kstrdup() for @ftrace_mod->{func|module} fails, it goes to @out_free
tag and calls free_ftrace_mod() to destroy @ftrace_mod, then list_del()
will write prev->next and next->prev, where null pointer dereference
happens.
BUG: kernel NULL pointer dereference, address: 0000000000000008
Oops: 0002 [#1] PREEMPT SMP NOPTI
Call Trace:
<TASK>
ftrace_mod_callback+0x20d/0x220
? do_filp_open+0xd9/0x140
ftrace_process_regex.isra.51+0xbf/0x130
ftrace_regex_write.isra.52.part.53+0x6e/0x90
vfs_write+0xee/0x3a0
? __audit_filter_op+0xb1/0x100
? auditd_test_task+0x38/0x50
ksys_write+0xa5/0xe0
do_syscall_64+0x3a/0x90
entry_SYSCALL_64_after_hwframe+0x63/0xcd
Kernel panic - not syncing: Fatal exception
So call INIT_LIST_HEAD() to initialize the list member to fix this issue.
Link: https://lkml.kernel.org/r/20221116015207.30858-1-xiujianfeng@huawei.com
Cc: stable@vger.kernel.org
Fixes: 673feb9d76ab ("ftrace: Add :mod: caching infrastructure to trace_array")
Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
kernel/trace/ftrace.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 56a168121bfc..33236241f236 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -1289,6 +1289,7 @@ static int ftrace_add_mod(struct trace_array *tr,
if (!ftrace_mod)
return -ENOMEM;
+ INIT_LIST_HEAD(&ftrace_mod->list);
ftrace_mod->func = kstrdup(func, GFP_KERNEL);
ftrace_mod->module = kstrdup(module, GFP_KERNEL);
ftrace_mod->enable = enable;
--
2.35.1
next prev parent reply other threads:[~2022-11-20 20:07 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-20 20:07 [for-linus][PATCH 00/13] tracing: Fixes for 6.1 Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 01/13] tracing/ring-buffer: Have polling block on watermark Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 02/13] ring-buffer: Include dropped pages in counting dirty patches Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 03/13] tracing: Fix memory leak in tracing_read_pipe() Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 04/13] tracing: Fix warning on variable struct trace_array Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 05/13] ftrace: Fix the possible incorrect kernel message Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 06/13] ftrace: Optimize the allocation for mcount entries Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 07/13] ring_buffer: Do not deactivate non-existant pages Steven Rostedt
2022-11-20 20:07 ` Steven Rostedt [this message]
2022-11-20 20:07 ` [for-linus][PATCH 09/13] tracing: Fix memory leak in test_gen_synth_cmd() and test_empty_synth_event() Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 10/13] tracing: Fix wild-memory-access in register_synth_event() Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 11/13] tracing: Remove unused __bad_type_size() method Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 12/13] tracing: Fix potential null-pointer-access of entry in list tr->err_log Steven Rostedt
2022-11-20 20:07 ` [for-linus][PATCH 13/13] tracing: Fix race where eprobes can be called before the event Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221120200734.707886372@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=stable@vger.kernel.org \
--cc=xiujianfeng@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox