Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1494389 > unrolled thread
| Started by | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| First post | 2016-10-01 12:20 +0200 |
| Last post | 2016-10-07 00:50 +0200 |
| Articles | 6 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() Namhyung Kim <namhyung@kernel.org> - 2016-10-01 12:20 +0200
Re: [PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-05 13:40 +0200
Re: [PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() Steven Rostedt <rostedt@goodmis.org> - 2016-10-05 15:30 +0200
Re: [PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() Namhyung Kim <namhyung@kernel.org> - 2016-10-07 06:20 +0200
Re: [PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() Steven Rostedt <rostedt@goodmis.org> - 2016-10-07 16:10 +0200
[tip:perf/urgent] tools lib traceevent: Fix kbuffer_read_at_offset() tip-bot for Namhyung Kim <tipbot@zytor.com> - 2016-10-07 00:50 +0200
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2016-10-01 12:20 +0200 |
| Subject | [PATCH] tools lib traceevent: Fix kbuffer_read_at_offset() |
| Message-ID | <snpyF-71K-9@gated-at.bofh.it> |
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.
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Namhyung Kim <namhyung@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);
--
2.10.0
[toc] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2016-10-05 13:40 +0200 |
| Message-ID | <soSIi-mA-11@gated-at.bofh.it> |
| In reply to | #1494389 |
Em Sat, Oct 01, 2016 at 07:17:00PM +0900, Namhyung Kim escreveu:
> 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.
Steven, Ack?
- Arnaldo
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Signed-off-by: Namhyung Kim <namhyung@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);
> --
> 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-10-05 15:30 +0200 |
| Message-ID | <soUqK-1wC-15@gated-at.bofh.it> |
| In reply to | #1494389 |
On Sat, 1 Oct 2016 19:17:00 +0900
Namhyung Kim <namhyung@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.
But that said, it looks like offset == 0 is buggy.
Acked-by: Steven Rostedt <rostedt@goodmis.org>
-- Steve
>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Signed-off-by: Namhyung Kim <namhyung@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);
[toc] | [prev] | [next] | [standalone]
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2016-10-07 06:20 +0200 |
| Message-ID | <spuNz-2X5-1@gated-at.bofh.it> |
| In reply to | #1495870 |
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 <namhyung@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 <rostedt@goodmis.org>
Thanks,
Namhyung
>
>
> -- Steve
>
> >
> > Cc: Steven Rostedt <rostedt@goodmis.org>
> > Signed-off-by: Namhyung Kim <namhyung@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);
>
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-10-07 16:10 +0200 |
| Message-ID | <spE0y-1th-3@gated-at.bofh.it> |
| In reply to | #1496989 |
On Fri, 7 Oct 2016 13:19:08 +0900 Namhyung Kim <namhyung@kernel.org> wrote: > 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. :) Right, because kbuffer_read_at_offset() should not return a TIME_EXTEND. -- Steve
[toc] | [prev] | [next] | [standalone]
| From | tip-bot for Namhyung Kim <tipbot@zytor.com> |
|---|---|
| Date | 2016-10-07 00:50 +0200 |
| Subject | [tip:perf/urgent] tools lib traceevent: Fix kbuffer_read_at_offset() |
| Message-ID | <sppEd-7qB-19@gated-at.bofh.it> |
| In reply to | #1494389 |
Commit-ID: a130347973c408c0e0017a52c74cbc3226c1f0ef
Gitweb: http://git.kernel.org/tip/a130347973c408c0e0017a52c74cbc3226c1f0ef
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Sat, 1 Oct 2016 19:17:00 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 5 Oct 2016 11:36:22 -0300
tools lib traceevent: Fix kbuffer_read_at_offset()
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.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20161001101700.29146-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
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 3bcada3..65984f1 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);
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web