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 <[email protected]> Reported-by: Wattson CI <[email protected]> --- 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
