diff options
| -rw-r--r-- | kernel/trace/ftrace.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index a12f80efceaa..2f32969c09df 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1047,6 +1047,13 @@ ftrace_match(unsigned char *buff, int len, int enable) | |||
| 1047 | int type = MATCH_FULL; | 1047 | int type = MATCH_FULL; |
| 1048 | unsigned long flag = enable ? FTRACE_FL_FILTER : FTRACE_FL_NOTRACE; | 1048 | unsigned long flag = enable ? FTRACE_FL_FILTER : FTRACE_FL_NOTRACE; |
| 1049 | unsigned i, match = 0, search_len = 0; | 1049 | unsigned i, match = 0, search_len = 0; |
| 1050 | int not = 0; | ||
| 1051 | |||
| 1052 | if (buff[0] == '!') { | ||
| 1053 | not = 1; | ||
| 1054 | buff++; | ||
| 1055 | len--; | ||
| 1056 | } | ||
| 1050 | 1057 | ||
| 1051 | for (i = 0; i < len; i++) { | 1058 | for (i = 0; i < len; i++) { |
| 1052 | if (buff[i] == '*') { | 1059 | if (buff[i] == '*') { |
| @@ -1100,8 +1107,12 @@ ftrace_match(unsigned char *buff, int len, int enable) | |||
| 1100 | matched = 1; | 1107 | matched = 1; |
| 1101 | break; | 1108 | break; |
| 1102 | } | 1109 | } |
| 1103 | if (matched) | 1110 | if (matched) { |
| 1104 | rec->flags |= flag; | 1111 | if (not) |
| 1112 | rec->flags &= ~flag; | ||
| 1113 | else | ||
| 1114 | rec->flags |= flag; | ||
| 1115 | } | ||
| 1105 | } | 1116 | } |
| 1106 | pg = pg->next; | 1117 | pg = pg->next; |
| 1107 | } | 1118 | } |
