[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251007003417.3470979-2-runpinglai@google.com>
Date: Tue, 7 Oct 2025 00:34:17 +0000
From: Runping Lai <runpinglai@...gle.com>
To: Steven Rostedt <rostedt@...dmis.org>, Masami Hiramatsu <mhiramat@...nel.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
Cc: Runping Lai <runpinglai@...gle.com>, Wattson CI <wattson-external@...gle.com>,
kernel-team@...roid.com, linux-kernel@...r.kernel.org,
linux-trace-kernel@...r.kernel.org
Subject: [PATCH v1] Revert "tracing: Fix tracing_marker may trigger page fault
during preempt_disable"
This reverts commit 3d62ab32df065e4a7797204a918f6489ddb8a237.
It's observed on Pixel 6 that this commit causes a severe functional
regression: all user-space writes to trace_marker now fail. The write
does not goes through at all. The error is observed in the shell as
'printf: write: Bad address'. This breaks a primary ftrace interface
for user-space debugging and profiling. In kernel trace file, it's
logged as 'tracing_mark_write: <faulted>'. After reverting this commit,
functionality is restored.
Signed-off-by: Runping Lai <runpinglai@...gle.com>
Reported-by: Wattson CI <wattson-external@...gle.com>
---
kernel/trace/trace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 156e7e0bf559..bb9a6284a629 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -7213,7 +7213,7 @@ static ssize_t write_marker_to_buffer(struct trace_array *tr, const char __user
entry = ring_buffer_event_data(event);
entry->ip = ip;
- len = copy_from_user_nofault(&entry->buf, ubuf, cnt);
+ len = __copy_from_user_inatomic(&entry->buf, ubuf, cnt);
if (len) {
memcpy(&entry->buf, FAULTED_STR, FAULTED_SIZE);
cnt = FAULTED_SIZE;
@@ -7310,7 +7310,7 @@ static ssize_t write_raw_marker_to_buffer(struct trace_array *tr,
entry = ring_buffer_event_data(event);
- len = copy_from_user_nofault(&entry->id, ubuf, cnt);
+ len = __copy_from_user_inatomic(&entry->id, ubuf, cnt);
if (len) {
entry->id = -1;
memcpy(&entry->buf, FAULTED_STR, FAULTED_SIZE);
--
2.51.0.618.g983fd99d29-goog
Powered by blists - more mailing lists