Message ID | 20231212190422.1eaf224f@gandalf.local.home (mailing list archive) |
---|---|
State | Accepted |
Commit | 9482341d9bdaf194552673b6c1c81a824e985e7f |
Headers | show |
Series | tracing: Have trace_marker break up by lines by size of trace_seq | expand |
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 >
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
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());