public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Zheng Yejian <zhengyejian1@huawei.com>
Subject: [for-linus][PATCH 12/13] tracing: Fix potential null-pointer-access of entry in list tr->err_log
Date: Sun, 20 Nov 2022 15:07:12 -0500	[thread overview]
Message-ID: <20221120200735.618733319@goodmis.org> (raw)
In-Reply-To: 20221120200700.725968899@goodmis.org

From: Zheng Yejian <zhengyejian1@huawei.com>

Entries in list 'tr->err_log' will be reused after entry number
exceed TRACING_LOG_ERRS_MAX.

The cmd string of the to be reused entry will be freed first then
allocated a new one. If the allocation failed, then the entry will
still be in list 'tr->err_log' but its 'cmd' field is set to be NULL,
later access of 'cmd' is risky.

Currently above problem can cause the loss of 'cmd' information of first
entry in 'tr->err_log'. When execute `cat /sys/kernel/tracing/error_log`,
reproduce logs like:
  [   37.495100] trace_kprobe: error: Maxactive is not for kprobe(null) ^
  [   38.412517] trace_kprobe: error: Maxactive is not for kprobe
    Command: p4:myprobe2 do_sys_openat2
            ^

Link: https://lore.kernel.org/linux-trace-kernel/20221114104632.3547266-1-zhengyejian1@huawei.com

Fixes: 1581a884b7ca ("tracing: Remove size restriction on tracing_log_err cmd strings")
Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 kernel/trace/trace.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 5bd202d6d79a..a7fe0e115272 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -7803,6 +7803,7 @@ static struct tracing_log_err *get_tracing_log_err(struct trace_array *tr,
 						   int len)
 {
 	struct tracing_log_err *err;
+	char *cmd;
 
 	if (tr->n_err_log_entries < TRACING_LOG_ERRS_MAX) {
 		err = alloc_tracing_log_err(len);
@@ -7811,12 +7812,12 @@ static struct tracing_log_err *get_tracing_log_err(struct trace_array *tr,
 
 		return err;
 	}
-
+	cmd = kzalloc(len, GFP_KERNEL);
+	if (!cmd)
+		return ERR_PTR(-ENOMEM);
 	err = list_first_entry(&tr->err_log, struct tracing_log_err, list);
 	kfree(err->cmd);
-	err->cmd = kzalloc(len, GFP_KERNEL);
-	if (!err->cmd)
-		return ERR_PTR(-ENOMEM);
+	err->cmd = cmd;
 	list_del(&err->list);
 
 	return err;
-- 
2.35.1



  parent reply	other threads:[~2022-11-20 20:08 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 ` [for-linus][PATCH 08/13] ftrace: Fix null pointer dereference in ftrace_add_mod() Steven Rostedt
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 ` Steven Rostedt [this message]
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=20221120200735.618733319@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=zhengyejian1@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