Commit 6a072128 authored by Pavel Tikhomirov's avatar Pavel Tikhomirov Committed by Steven Rostedt (VMware)

tracing: Fix event filters and triggers to handle negative numbers

Then tracing syscall exit event it is extremely useful to filter exit
codes equal to some negative value, to react only to required errors.
But negative numbers does not work:

[root@snorch sys_exit_read]# echo "ret == -1" > filter
bash: echo: write error: Invalid argument
[root@snorch sys_exit_read]# cat filter
ret == -1
        ^
parse_error: Invalid value (did you forget quotes)?

Similar thing happens when setting triggers.

These is a regression in v4.17 introduced by the commit mentioned below,
testing without these commit shows no problem with negative numbers.

Link: http://lkml.kernel.org/r/20180823102534.7642-1-ptikhomirov@virtuozzo.com

Cc: stable@vger.kernel.org
Fixes: 80765597 ("tracing: Rewrite filter logic to be simpler and faster")
Signed-off-by: default avatarPavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 9e738215
...@@ -1301,7 +1301,7 @@ static int parse_pred(const char *str, void *data, ...@@ -1301,7 +1301,7 @@ static int parse_pred(const char *str, void *data,
/* go past the last quote */ /* go past the last quote */
i++; i++;
} else if (isdigit(str[i])) { } else if (isdigit(str[i]) || str[i] == '-') {
/* Make sure the field is not a string */ /* Make sure the field is not a string */
if (is_string_field(field)) { if (is_string_field(field)) {
...@@ -1314,6 +1314,9 @@ static int parse_pred(const char *str, void *data, ...@@ -1314,6 +1314,9 @@ static int parse_pred(const char *str, void *data,
goto err_free; goto err_free;
} }
if (str[i] == '-')
i++;
/* We allow 0xDEADBEEF */ /* We allow 0xDEADBEEF */
while (isalnum(str[i])) while (isalnum(str[i]))
i++; i++;
......
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