[PATCH v2 2/2] tracnig: Add proper error message for glob use with "within" filter
Steven Rostedt <[email protected]>
| Newsgroups | org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Steven Rostedt <[email protected]> If a user were to use a glob expression with the "within" filter, it currently just fails with an errno return but does not update the error_log to tell the user why it failed. Update it to use the parsing error log to tell the user why it failed. # echo 'within ~ "*_read"' > events/kmem/kmem_cache_alloc/filter -bash: echo: write error: Invalid argument # cat error_log [ 4676.606481] event filter parse error: error: 'within' filter cannot take glob expressions Command: within ~ "*_read" ^ Signed-off-by: Steven Rostedt <[email protected]> --- kernel/trace/trace_events_filter.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 297bf156ea65..f811c527cce8 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -118,6 +118,7 @@ struct filter_pred { C(IP_FIELD_ONLY, "Only 'ip' field is supported for function trace"), \ C(INVALID_VALUE, "Invalid value (did you forget quotes)?"), \ C(NO_FUNCTION, "Function not found"), \ + C(GLOB_WITHIN, "'within' filter cannot take glob expressions"), \ C(ERRNO, "Error"), \ C(NO_FILTER, "No filter found") @@ -2024,8 +2025,10 @@ static int parse_pred(const char *str, void *data, } else if (field->filter_type == FILTER_WITHIN) { unsigned long func; - if (op == OP_GLOB) + if (op == OP_GLOB) { + parse_error(pe, FILT_ERR_GLOB_WITHIN, pos + i); goto err_free; + } pred->fn_num = FILTER_PRED_FN_WITHIN; func = kallsyms_lookup_name(pred->regex->pattern); -- 2.53.0