Commit 43ed3843 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt

tracing: Put back comma for empty fields in boot string parsing

Both early_enable_events() and apply_trace_boot_options() parse a boot
string that may get parsed later on. They both use strsep() which converts a
comma into a nul character. To still allow the boot string to be parsed
again the same way, the nul character gets converted back to a comma after
the token is processed.

The problem is that these two functions check for an empty parameter (two
commas in a row ",,"), and continue the loop if the parameter is empty, but
fails to place the comma back. In this case, the second parsing will end at
this blank field, and not process fields afterward.

In most cases, users should not have an empty field, but if its going to be
checked, the code might as well be correct.
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent a4d1e688
...@@ -3636,9 +3636,8 @@ static void __init apply_trace_boot_options(void) ...@@ -3636,9 +3636,8 @@ static void __init apply_trace_boot_options(void)
if (!option) if (!option)
break; break;
if (!*option)
continue;
if (*option)
trace_set_options(&global_trace, option); trace_set_options(&global_trace, option);
/* Put back the comma to allow this to be called again */ /* Put back the comma to allow this to be called again */
......
...@@ -3042,9 +3042,8 @@ early_enable_events(struct trace_array *tr, bool disable_first) ...@@ -3042,9 +3042,8 @@ early_enable_events(struct trace_array *tr, bool disable_first)
if (!token) if (!token)
break; break;
if (!*token)
continue;
if (*token) {
/* Restarting syscalls requires that we stop them first */ /* Restarting syscalls requires that we stop them first */
if (disable_first) if (disable_first)
ftrace_set_clr_event(tr, token, 0); ftrace_set_clr_event(tr, token, 0);
...@@ -3052,6 +3051,7 @@ early_enable_events(struct trace_array *tr, bool disable_first) ...@@ -3052,6 +3051,7 @@ early_enable_events(struct trace_array *tr, bool disable_first)
ret = ftrace_set_clr_event(tr, token, 1); ret = ftrace_set_clr_event(tr, token, 1);
if (ret) if (ret)
pr_warn("Failed to enable trace event: %s\n", token); pr_warn("Failed to enable trace event: %s\n", token);
}
/* Put back the comma to allow this to be called again */ /* Put back the comma to allow this to be called again */
if (buf) if (buf)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment