aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace_events_filter.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 01c76eb3e168..8c62e5bdff09 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -851,10 +851,19 @@ static void postfix_clear(struct filter_parse_state *ps)
851 851
852static int filter_parse(struct filter_parse_state *ps) 852static int filter_parse(struct filter_parse_state *ps)
853{ 853{
854 int in_string = 0;
854 int op, top_op; 855 int op, top_op;
855 char ch; 856 char ch;
856 857
857 while ((ch = infix_next(ps))) { 858 while ((ch = infix_next(ps))) {
859 if (ch == '"') {
860 in_string ^= 1;
861 continue;
862 }
863
864 if (in_string)
865 goto parse_operand;
866
858 if (isspace(ch)) 867 if (isspace(ch))
859 continue; 868 continue;
860 869
@@ -908,6 +917,7 @@ static int filter_parse(struct filter_parse_state *ps)
908 } 917 }
909 continue; 918 continue;
910 } 919 }
920parse_operand:
911 if (append_operand_char(ps, ch)) { 921 if (append_operand_char(ps, ch)) {
912 parse_error(ps, FILT_ERR_OPERAND_TOO_LONG, 0); 922 parse_error(ps, FILT_ERR_OPERAND_TOO_LONG, 0);
913 return -EINVAL; 923 return -EINVAL;