| From: Tom Zanussi <tom.zanussi@linux.intel.com> |
| Date: Tue, 5 Sep 2017 16:57:43 -0500 |
| Subject: [PATCH 31/40] tracing: Allow whitespace to surround hist trigger |
| filter |
| |
| The existing code only allows for one space before and after the 'if' |
| specifying the filter for a hist trigger. Add code to make that more |
| permissive as far as whitespace goes. |
| |
| Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| kernel/trace/trace_events_hist.c | 19 +++++++++++++++---- |
| 1 file changed, 15 insertions(+), 4 deletions(-) |
| |
| --- a/kernel/trace/trace_events_hist.c |
| +++ b/kernel/trace/trace_events_hist.c |
| @@ -4819,7 +4819,7 @@ static int event_hist_trigger_func(struc |
| struct synth_event *se; |
| const char *se_name; |
| bool remove = false; |
| - char *trigger; |
| + char *trigger, *p; |
| int ret = 0; |
| |
| if (!param) |
| @@ -4829,9 +4829,19 @@ static int event_hist_trigger_func(struc |
| remove = true; |
| |
| /* separate the trigger from the filter (k:v [if filter]) */ |
| - trigger = strsep(¶m, " \t"); |
| - if (!trigger) |
| - return -EINVAL; |
| + trigger = param; |
| + p = strstr(param, " if"); |
| + if (!p) |
| + p = strstr(param, "\tif"); |
| + if (p) { |
| + if (p == trigger) |
| + return -EINVAL; |
| + param = p + 1; |
| + param = strstrip(param); |
| + *p = '\0'; |
| + trigger = strstrip(trigger); |
| + } else |
| + param = NULL; |
| |
| attrs = parse_hist_trigger_attrs(trigger); |
| if (IS_ERR(attrs)) |
| @@ -4889,6 +4899,7 @@ static int event_hist_trigger_func(struc |
| } |
| |
| ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file); |
| + |
| /* |
| * The above returns on success the # of triggers registered, |
| * but if it didn't register any it returns zero. Consider no |