lkml.org 
[lkml]   [2009]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 5/7] ftrace: don't increment @pos in g_start()
    It's wrong to increment @pos in g_start(). It causes some entries
    lost when reading set_graph_function, if the output of the file
    is large than PAGE_SIZE.

    [ Impact: fix missing entries when reading set_graph_function ]

    Reviewed-by: Liming Wang <liming.wang@windriver.com>
    Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    ---
    kernel/trace/ftrace.c | 21 ++++++++++-----------
    1 files changed, 10 insertions(+), 11 deletions(-)

    diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
    index 561cafc..c06e9ab 100644
    --- a/kernel/trace/ftrace.c
    +++ b/kernel/trace/ftrace.c
    @@ -2499,32 +2499,31 @@ int ftrace_graph_count;
    unsigned long ftrace_graph_funcs[FTRACE_GRAPH_MAX_FUNCS] __read_mostly;

    static void *
    -g_next(struct seq_file *m, void *v, loff_t *pos)
    +__g_next(struct seq_file *m, loff_t *pos)
    {
    unsigned long *array = m->private;
    - int index = *pos;
    -
    - (*pos)++;

    - if (index >= ftrace_graph_count)
    + if (*pos >= ftrace_graph_count)
    return NULL;
    + return &array[*pos];
    +}

    - return &array[index];
    +static void *
    +g_next(struct seq_file *m, void *v, loff_t *pos)
    +{
    + (*pos)++;
    + return __g_next(m, pos);
    }

    static void *g_start(struct seq_file *m, loff_t *pos)
    {
    - void *p = NULL;
    -
    mutex_lock(&graph_lock);

    /* Nothing, tell g_show to print all functions are enabled */
    if (!ftrace_graph_count && !*pos)
    return (void *)1;

    - p = g_next(m, p, pos);
    -
    - return p;
    + return __g_next(m, pos);
    }

    static void g_stop(struct seq_file *m, void *p)
    --
    1.5.4.rc3


    \
     
     \ /
      Last update: 2009-06-24 03:55    [W:0.021 / U:29.900 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site