kernel/trace/trace.c | 5 +++++ 1 file changed, 5 insertions(+)
From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
If a trace_marker write is bigger than what trace_seq can hold, then it
will print "LINE TOO BIG" message and not what was written.
Instead, if check if the write is bigger than the trace_seq and break it
up by that size.
Ideally, we could make the trace_seq dynamic that could hold this. But
that's for another time.
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
kernel/trace/trace.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 893e749713d3..2a21bc840fe7 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -7298,6 +7298,11 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
if (cnt < FAULTED_SIZE)
size += FAULTED_SIZE - cnt;
+ if (size > TRACE_SEQ_BUFFER_SIZE) {
+ cnt -= size - TRACE_SEQ_BUFFER_SIZE;
+ goto again;
+ }
+
buffer = tr->array_buffer.buffer;
event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
tracing_gen_ctx());
--
2.42.0
On Tue, 12 Dec 2023 19:04:22 -0500
Steven Rostedt <rostedt@goodmis.org> wrote:
> From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
>
> If a trace_marker write is bigger than what trace_seq can hold, then it
> will print "LINE TOO BIG" message and not what was written.
>
> Instead, if check if the write is bigger than the trace_seq and break it
Instead, check if ... ?
> up by that size.
>
> Ideally, we could make the trace_seq dynamic that could hold this. But
> that's for another time.
I think this is OK, but if possible it is better to be merged with the
"LINE TOO BIG" patch (by updating the version).
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Thank you,
>
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
> kernel/trace/trace.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 893e749713d3..2a21bc840fe7 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -7298,6 +7298,11 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
> if (cnt < FAULTED_SIZE)
> size += FAULTED_SIZE - cnt;
>
> + if (size > TRACE_SEQ_BUFFER_SIZE) {
> + cnt -= size - TRACE_SEQ_BUFFER_SIZE;
> + goto again;
> + }
> +
> buffer = tr->array_buffer.buffer;
> event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
> tracing_gen_ctx());
> --
> 2.42.0
>
--
Masami Hiramatsu (Google) <mhiramat@kernel.org>
On Wed, 13 Dec 2023 09:19:33 +0900 Masami Hiramatsu (Google) <mhiramat@kernel.org> wrote: > On Tue, 12 Dec 2023 19:04:22 -0500 > Steven Rostedt <rostedt@goodmis.org> wrote: > > > From: "Steven Rostedt (Google)" <rostedt@goodmis.org> > > > > If a trace_marker write is bigger than what trace_seq can hold, then it > > will print "LINE TOO BIG" message and not what was written. > > > > Instead, if check if the write is bigger than the trace_seq and break it > > Instead, check if ... ? Ah yes, thank you. > > > up by that size. > > > > Ideally, we could make the trace_seq dynamic that could hold this. But > > that's for another time. > > I think this is OK, but if possible it is better to be merged with the > "LINE TOO BIG" patch (by updating the version). What do you mean by "updating the version"? Note, the LINE TOO BIG doesn't happen today. It only happens when applying the sub buffer resize change, and then when I run the tests, it breaks when the subbuffer is bigger than the trace_seq. > > Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Thanks! -- Steve
© 2016 - 2025 Red Hat, Inc.