diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2009-12-07 22:15:30 -0500 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2009-12-13 12:37:26 -0500 |
commit | 313254a9400d388b46150c0f355e216418a2f598 (patch) | |
tree | 190c360ad60b27763e2f95dc5cf8fa9068d3d71e | |
parent | 311d16da575f53c3367099579736c1d233efe0dc (diff) |
ftrace: Call trace_parser_clear() properly
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, otherwise we will actually take the unaccepted
records from ftrace_regex_release().
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4B1DC4D2.3000406@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-rw-r--r-- | 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 08a3fb5b3187..ff8aecdc6dd6 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, | |||
2208 | !trace_parser_cont(parser)) { | 2208 | !trace_parser_cont(parser)) { |
2209 | ret = ftrace_process_regex(parser->buffer, | 2209 | ret = ftrace_process_regex(parser->buffer, |
2210 | parser->idx, enable); | 2210 | parser->idx, enable); |
2211 | trace_parser_clear(parser); | ||
2211 | if (ret) | 2212 | if (ret) |
2212 | goto out_unlock; | 2213 | goto out_unlock; |
2213 | |||
2214 | trace_parser_clear(parser); | ||
2215 | } | 2214 | } |
2216 | 2215 | ||
2217 | ret = read; | 2216 | ret = read; |