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 /kernel/trace/ftrace.c | |
| 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>
Diffstat (limited to 'kernel/trace/ftrace.c')
| -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; |
