Skip to content

Commit

Permalink
trace_stat: Fix missing entry in stat file
Browse files Browse the repository at this point in the history
One entry is missing in the output of a stat file.

The cause is, when stat_seq_start() is called the 2nd time, we
should start from the (pos-1)th elem in the rbtree but not pos,
because pos == 0 is the header.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <4A891A65.70009@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Li Zefan authored and Ingo Molnar committed Aug 17, 2009
1 parent ba8b3a4 commit 97d5320
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions kernel/trace/trace_stat.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,17 +203,21 @@ static void *stat_seq_start(struct seq_file *s, loff_t *pos)
{
struct stat_session *session = s->private;
struct rb_node *node;
int n = *pos;
int i;

/* Prevent from tracer switch or rbtree modification */
mutex_lock(&session->stat_mutex);

/* If we are in the beginning of the file, print the headers */
if (!*pos && session->ts->stat_headers)
return SEQ_START_TOKEN;
if (session->ts->stat_headers) {
if (n == 0)
return SEQ_START_TOKEN;
n--;
}

node = rb_first(&session->stat_root);
for (i = 0; node && i < *pos; i++)
for (i = 0; node && i < n; i++)
node = rb_next(node);

return node;
Expand Down

0 comments on commit 97d5320

Please sign in to comment.