OSDN Git Service

tracing: Embed replace_filter_string() helper function
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 23 Feb 2018 14:45:27 +0000 (09:45 -0500)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Sat, 10 Mar 2018 21:06:07 +0000 (16:06 -0500)
The replace_filter_string() frees the current string and then copies a given
string. But in the two locations that it was used, the allocation happened
right after the filter was allocated (nothing to replace). There's no need
for this to be a helper function. Embedding the allocation in the two places
where it was called will make changing the code in the future easier.

Also make the variable consistent (always use "filter_string" as the name,
as it was used in one instance as "filter_str")

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace_events_filter.c

index 2401b7c..c3c6eee 100644 (file)
@@ -664,17 +664,6 @@ static void remove_filter_string(struct event_filter *filter)
        filter->filter_string = NULL;
 }
 
-static int replace_filter_string(struct event_filter *filter,
-                                char *filter_string)
-{
-       kfree(filter->filter_string);
-       filter->filter_string = kstrdup(filter_string, GFP_KERNEL);
-       if (!filter->filter_string)
-               return -ENOMEM;
-
-       return 0;
-}
-
 static void append_filter_err(struct filter_parse_state *ps,
                              struct event_filter *filter)
 {
@@ -1802,9 +1791,8 @@ static int replace_system_preds(struct trace_subsystem_dir *dir,
                if (!filter)
                        goto fail_mem;
 
-               /* Can only fail on no memory */
-               err = replace_filter_string(filter, filter_string);
-               if (err)
+               filter->filter_string = kstrdup(filter_string, GFP_KERNEL);
+               if (!filter->filter_string)
                        goto fail_mem;
 
                err = replace_preds(file->event_call, filter, ps, false);
@@ -1868,7 +1856,7 @@ static int replace_system_preds(struct trace_subsystem_dir *dir,
        return -ENOMEM;
 }
 
-static int create_filter_start(char *filter_str, bool set_str,
+static int create_filter_start(char *filter_string, bool set_str,
                               struct filter_parse_state **psp,
                               struct event_filter **filterp)
 {
@@ -1880,8 +1868,11 @@ static int create_filter_start(char *filter_str, bool set_str,
 
        /* allocate everything, and if any fails, free all and fail */
        filter = kzalloc(sizeof(*filter), GFP_KERNEL);
-       if (filter && set_str)
-               err = replace_filter_string(filter, filter_str);
+       if (filter && set_str) {
+               filter->filter_string = kstrdup(filter_string, GFP_KERNEL);
+               if (!filter->filter_string)
+                       err = -ENOMEM;
+       }
 
        ps = kzalloc(sizeof(*ps), GFP_KERNEL);
 
@@ -1895,7 +1886,7 @@ static int create_filter_start(char *filter_str, bool set_str,
        *filterp = filter;
        *psp = ps;
 
-       parse_init(ps, filter_ops, filter_str);
+       parse_init(ps, filter_ops, filter_string);
        err = filter_parse(ps);
        if (err && set_str)
                append_filter_err(ps, filter);