aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2018-07-02 11:41:38 -0400
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2018-07-03 18:14:40 -0400
commitf90658725ba7ebb031054866aff4cda0d099a3b1 (patch)
treefeafdd5734022a3ae1975a9e85065ee53a272c6e
parentcf4d418e653afc84c9c873236033e06be5d58f1c (diff)
tracing: Make create_filter() code match the comments
The comment in create_filter() states that the passed in filter pointer (filterp) will either be NULL or contain an error message stating why the filter failed. But it also expects the filter pointer to point to NULL when passed in. If it is not, the function create_filter_start() will warn and return an error message without updating the filter pointer. This is not what the comment states. As we always expect the pointer to point to NULL, if it is not, trigger a WARN_ON(), set it to NULL, and then continue the path as the rest will work as the comment states. Also update the comment to state it must point to NULL. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r--kernel/trace/trace_events_filter.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 0dceb77d1d42..893a206bcba4 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -1701,6 +1701,7 @@ static void create_filter_finish(struct filter_parse_error *pe)
1701 * @filter_str: filter string 1701 * @filter_str: filter string
1702 * @set_str: remember @filter_str and enable detailed error in filter 1702 * @set_str: remember @filter_str and enable detailed error in filter
1703 * @filterp: out param for created filter (always updated on return) 1703 * @filterp: out param for created filter (always updated on return)
1704 * Must be a pointer that references a NULL pointer.
1704 * 1705 *
1705 * Creates a filter for @call with @filter_str. If @set_str is %true, 1706 * Creates a filter for @call with @filter_str. If @set_str is %true,
1706 * @filter_str is copied and recorded in the new filter. 1707 * @filter_str is copied and recorded in the new filter.
@@ -1718,6 +1719,10 @@ static int create_filter(struct trace_event_call *call,
1718 struct filter_parse_error *pe = NULL; 1719 struct filter_parse_error *pe = NULL;
1719 int err; 1720 int err;
1720 1721
1722 /* filterp must point to NULL */
1723 if (WARN_ON(*filterp))
1724 *filterp = NULL;
1725
1721 err = create_filter_start(filter_string, set_str, &pe, filterp); 1726 err = create_filter_start(filter_string, set_str, &pe, filterp);
1722 if (err) 1727 if (err)
1723 return err; 1728 return err;