lkml.org 
[lkml]   [2009]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 05/13] ftrace: Call trace_parser_clear() properly
    Frederic Weisbecker wrote:
    > On Tue, Dec 08, 2009 at 11:15:30AM +0800, Li Zefan wrote:
    >> I found a weird behavior:
    >>
    >> # echo 'fuse:*' > set_ftrace_filter
    >> bash: echo: write error: Invalid argument
    >> # cat set_ftrace_filter
    >> fuse_dev_fasync
    >> fuse_dev_poll
    >> fuse_copy_do
    >>
    >> We should call trace_parser_clear() no matter ftrace_process_regex()
    >> returns 0 or -errno.
    >>
    >> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    >> ---
    >> kernel/trace/ftrace.c | 3 +--
    >> 1 files changed, 1 insertions(+), 2 deletions(-)
    >>
    >> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
    >> index 08a3fb5..ff8aecd 100644
    >> --- a/kernel/trace/ftrace.c
    >> +++ b/kernel/trace/ftrace.c
    >> @@ -2208,10 +2208,9 @@ ftrace_regex_write(struct file *file, const char __user *ubuf,
    >> !trace_parser_cont(parser)) {
    >> ret = ftrace_process_regex(parser->buffer,
    >> parser->idx, enable);
    >> + trace_parser_clear(parser);
    >> if (ret)
    >> goto out_unlock;
    >> -
    >> - trace_parser_clear(parser);
    >> }
    >
    >
    > I'm missing something. How that can happen. Anytime we reopen
    > the file, the parser is re-allocated.
    >

    It happened at file closing..

    static int
    ftrace_regex_release(struct inode *inode, struct file *file, int enable)
    {
    ...
    parser = &iter->parser;
    if (trace_parser_loaded(parser)) {
    parser->buffer[parser->idx] = 0;
    /* here ! */
    ftrace_match_records(parser->buffer, parser->idx, enable);
    }
    ...
    }

    > I guess that happens if you open in rw mode? But not using the
    > example in the changelog?

    I've confirmed that example I was using can reveal this bug.


    \
     
     \ /
      Last update: 2009-12-08 11:07    [W:0.038 / U:60.004 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site