* [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write()
@ 2009-11-03 0:55 Li Zefan
2009-11-03 0:56 ` [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter Li Zefan
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Li Zefan @ 2009-11-03 0:55 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Steven Rostedt, Frederic Weisbecker, Jiri Olsa, LKML
# echo 'do_open : foo' > set_ftrace_filter
(still holding ftrace_regex_lock when returning to user space!)
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
This patch is for .32
---
kernel/trace/ftrace.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 1ed514f..7cb6f19 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2199,15 +2199,15 @@ ftrace_regex_write(struct file *file, const char __user *ubuf,
ret = ftrace_process_regex(parser->buffer,
parser->idx, enable);
if (ret)
- goto out;
+ goto out_unlock;
trace_parser_clear(parser);
}
ret = read;
-
+out_unlock:
mutex_unlock(&ftrace_regex_lock);
-out:
+
return ret;
}
--
1.6.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter 2009-11-03 0:55 [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Li Zefan @ 2009-11-03 0:56 ` Li Zefan 2009-11-04 1:44 ` Frederic Weisbecker 2009-11-03 0:57 ` [PATCH 3/3] function-graph: Allow writing the same val to set_graph_function Li Zefan ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Li Zefan @ 2009-11-03 0:56 UTC (permalink / raw) To: Ingo Molnar; +Cc: Steven Rostedt, Frederic Weisbecker, LKML Currently it doesn't warn user on invald value: # echo nonexist_symbol > set_ftrace_filter Better make it return failure. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> --- kernel/trace/ftrace.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 7cb6f19..e0184b7 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1724,7 +1724,7 @@ ftrace_match_record(struct dyn_ftrace *rec, char *regex, int len, int type) return ftrace_match(str, regex, len, type); } -static void ftrace_match_records(char *buff, int len, int enable) +static int ftrace_match_records(char *buff, int len, int enable) { unsigned int search_len; struct ftrace_page *pg; @@ -1733,6 +1733,7 @@ static void ftrace_match_records(char *buff, int len, int enable) char *search; int type; int not; + int found = 0; flag = enable ? FTRACE_FL_FILTER : FTRACE_FL_NOTRACE; type = filter_parse_regex(buff, len, &search, ¬); @@ -1750,6 +1751,7 @@ static void ftrace_match_records(char *buff, int len, int enable) rec->flags &= ~flag; else rec->flags |= flag; + found = 1; } /* * Only enable filtering if we have a function that @@ -1759,6 +1761,8 @@ static void ftrace_match_records(char *buff, int len, int enable) ftrace_filtered = 1; } while_for_each_ftrace_rec(); mutex_unlock(&ftrace_lock); + + return found; } static int @@ -2151,8 +2155,10 @@ static int ftrace_process_regex(char *buff, int len, int enable) func = strsep(&next, ":"); if (!next) { - ftrace_match_records(func, len, enable); - return 0; + if (ftrace_match_records(func, len, enable)) + return 0; + else + return ret; } /* command found */ -- 1.6.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter 2009-11-03 0:56 ` [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter Li Zefan @ 2009-11-04 1:44 ` Frederic Weisbecker 2009-11-04 2:58 ` Li Zefan 0 siblings, 1 reply; 8+ messages in thread From: Frederic Weisbecker @ 2009-11-04 1:44 UTC (permalink / raw) To: Li Zefan; +Cc: Ingo Molnar, Steven Rostedt, LKML On Tue, Nov 03, 2009 at 08:56:28AM +0800, Li Zefan wrote: > Currently it doesn't warn user on invald value: > > # echo nonexist_symbol > set_ftrace_filter > > Better make it return failure. > > Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> > --- Acked-by: Frederic Weisbecker <fweisbec@gmail.com> But shouldn't we have the same kind of check from ftrace_match_module_records() if we haven't matched anything with the regex? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter 2009-11-04 1:44 ` Frederic Weisbecker @ 2009-11-04 2:58 ` Li Zefan 2009-11-04 4:43 ` Steven Rostedt 0 siblings, 1 reply; 8+ messages in thread From: Li Zefan @ 2009-11-04 2:58 UTC (permalink / raw) To: Frederic Weisbecker; +Cc: Ingo Molnar, Steven Rostedt, LKML Frederic Weisbecker wrote: > On Tue, Nov 03, 2009 at 08:56:28AM +0800, Li Zefan wrote: >> Currently it doesn't warn user on invald value: >> >> # echo nonexist_symbol > set_ftrace_filter >> >> Better make it return failure. >> >> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> >> --- > > > Acked-by: Frederic Weisbecker <fweisbec@gmail.com> > > But shouldn't we have the same kind of check from > ftrace_match_module_records() if we haven't matched > anything with the regex? > Right, I overlooked it. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter 2009-11-04 2:58 ` Li Zefan @ 2009-11-04 4:43 ` Steven Rostedt 0 siblings, 0 replies; 8+ messages in thread From: Steven Rostedt @ 2009-11-04 4:43 UTC (permalink / raw) To: Li Zefan; +Cc: Frederic Weisbecker, Ingo Molnar, LKML On Wed, 2009-11-04 at 10:58 +0800, Li Zefan wrote: > Frederic Weisbecker wrote: > > On Tue, Nov 03, 2009 at 08:56:28AM +0800, Li Zefan wrote: > >> Currently it doesn't warn user on invald value: > >> > >> # echo nonexist_symbol > set_ftrace_filter > >> > >> Better make it return failure. > >> > >> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> > >> --- > > > > > > Acked-by: Frederic Weisbecker <fweisbec@gmail.com> > > > > But shouldn't we have the same kind of check from > > ftrace_match_module_records() if we haven't matched > > anything with the regex? > > > > Right, I overlooked it. > Only the first patch is urgent. I'll get that out and wait for you to update these other two (or just this one). Thanks, -- Steve ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/3] function-graph: Allow writing the same val to set_graph_function 2009-11-03 0:55 [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Li Zefan 2009-11-03 0:56 ` [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter Li Zefan @ 2009-11-03 0:57 ` Li Zefan 2009-11-03 8:26 ` [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Frederic Weisbecker 2009-11-04 11:09 ` [tip:tracing/urgent] ftrace: Fix unmatched " tip-bot for Li Zefan 3 siblings, 0 replies; 8+ messages in thread From: Li Zefan @ 2009-11-03 0:57 UTC (permalink / raw) To: Ingo Molnar; +Cc: Steven Rostedt, Frederic Weisbecker, Jiri Olsa, LKML # echo 'do_open' > set_graph_function # echo 'do_open' >> set_graph_function bash: echo: write error: Invalid argument Make it valid to write the same value to set_graph_function. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> --- kernel/trace/ftrace.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index e0184b7..eaf6a4d 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -2549,10 +2549,9 @@ ftrace_set_func(unsigned long *array, int *idx, char *buffer) exists = true; break; } - if (!exists) { + if (!exists) array[(*idx)++] = rec->ip; - found = 1; - } + found = 1; } } while_for_each_ftrace_rec(); -- 1.6.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() 2009-11-03 0:55 [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Li Zefan 2009-11-03 0:56 ` [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter Li Zefan 2009-11-03 0:57 ` [PATCH 3/3] function-graph: Allow writing the same val to set_graph_function Li Zefan @ 2009-11-03 8:26 ` Frederic Weisbecker 2009-11-04 11:09 ` [tip:tracing/urgent] ftrace: Fix unmatched " tip-bot for Li Zefan 3 siblings, 0 replies; 8+ messages in thread From: Frederic Weisbecker @ 2009-11-03 8:26 UTC (permalink / raw) To: Li Zefan; +Cc: Ingo Molnar, Steven Rostedt, Jiri Olsa, LKML On Tue, Nov 03, 2009 at 08:55:38AM +0800, Li Zefan wrote: > # echo 'do_open : foo' > set_ftrace_filter > (still holding ftrace_regex_lock when returning to user space!) > > Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [tip:tracing/urgent] ftrace: Fix unmatched locking in ftrace_regex_write() 2009-11-03 0:55 [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Li Zefan ` (2 preceding siblings ...) 2009-11-03 8:26 ` [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Frederic Weisbecker @ 2009-11-04 11:09 ` tip-bot for Li Zefan 3 siblings, 0 replies; 8+ messages in thread From: tip-bot for Li Zefan @ 2009-11-04 11:09 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, rostedt, lizf, tglx Commit-ID: ed146b25942b428f8e8056587b7638ce76573c2f Gitweb: http://git.kernel.org/tip/ed146b25942b428f8e8056587b7638ce76573c2f Author: Li Zefan <lizf@cn.fujitsu.com> AuthorDate: Tue, 3 Nov 2009 08:55:38 +0800 Committer: Steven Rostedt <rostedt@goodmis.org> CommitDate: Wed, 4 Nov 2009 01:42:10 -0500 ftrace: Fix unmatched locking in ftrace_regex_write() When a command is passed to the set_ftrace_filter, then the ftrace_regex_lock is still held going back to user space. # echo 'do_open : foo' > set_ftrace_filter (still holding ftrace_regex_lock when returning to user space!) Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> LKML-Reference: <4AEF7F8A.3080300@cn.fujitsu.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> --- kernel/trace/ftrace.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 9c451a1..6dc4e5e 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -2222,15 +2222,15 @@ ftrace_regex_write(struct file *file, const char __user *ubuf, ret = ftrace_process_regex(parser->buffer, parser->idx, enable); if (ret) - goto out; + goto out_unlock; trace_parser_clear(parser); } ret = read; - +out_unlock: mutex_unlock(&ftrace_regex_lock); -out: + return ret; } ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-11-04 11:10 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-11-03 0:55 [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Li Zefan 2009-11-03 0:56 ` [PATCH 2/3] ftrace: Return EINVAL when writing invalid val to set_ftrace_filter Li Zefan 2009-11-04 1:44 ` Frederic Weisbecker 2009-11-04 2:58 ` Li Zefan 2009-11-04 4:43 ` Steven Rostedt 2009-11-03 0:57 ` [PATCH 3/3] function-graph: Allow writing the same val to set_graph_function Li Zefan 2009-11-03 8:26 ` [PATCH 1/3] ftrace: Fix unmatching locking in ftrace_regex_write() Frederic Weisbecker 2009-11-04 11:09 ` [tip:tracing/urgent] ftrace: Fix unmatched " tip-bot for Li Zefan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox