diff options
-rw-r--r-- | kernel/trace/trace_events_filter.c | 10 |
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 | ||
852 | static int filter_parse(struct filter_parse_state *ps) | 852 | static 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 | } |
920 | parse_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; |