Hi Steve, On Wed, Oct 05, 2016 at 09:28:01AM -0400, Steven Rostedt wrote: > On Sat, 1 Oct 2016 19:17:00 +0900 > Namhyung Kim <namhy...@kernel.org> wrote: > > > When it's called with an offset less than or equal to the first event, > > it'll return a garbage value since the data is not initialized. > > Well, it can at most be equal to (unless offset is negative) because > kbuffer_load_subbuffer() sets kbuf->curr to zero.
Actually kbuffer_load_subbuffer() calls kbuf->next_event(). Inside the function it has a loop updating next valid event. Sometimes, the data starts with TIME_EXTEND with value of 0 and the loop skips it which ended up setting kbuf->curr to 8. :) I'll take a look it later. > > But that said, it looks like offset == 0 is buggy. > > Acked-by: Steven Rostedt <rost...@goodmis.org> Thanks, Namhyung > > > -- Steve > > > > > Cc: Steven Rostedt <rost...@goodmis.org> > > Signed-off-by: Namhyung Kim <namhy...@kernel.org> > > --- > > tools/lib/traceevent/kbuffer-parse.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/tools/lib/traceevent/kbuffer-parse.c > > b/tools/lib/traceevent/kbuffer-parse.c > > index 3bcada3ae05a..65984f1c2974 100644 > > --- a/tools/lib/traceevent/kbuffer-parse.c > > +++ b/tools/lib/traceevent/kbuffer-parse.c > > @@ -622,6 +622,7 @@ void *kbuffer_read_at_offset(struct kbuffer *kbuf, int > > offset, > > > > /* Reset the buffer */ > > kbuffer_load_subbuffer(kbuf, kbuf->subbuffer); > > + data = kbuffer_read_event(kbuf, ts); > > > > while (kbuf->curr < offset) { > > data = kbuffer_next_event(kbuf, ts); >