Commit 751e9983ee276cb150e8812b1d995f6035a63878
Committed by
Steven Rostedt
1 parent
b82a4045f7
ftrace: Fix MATCH_END_ONLY function filter
For '*foo' pattern, we should allow any string ending with 'foo', but ftrace filter incorrectly disallows strings like bar_foo_foo: # echo '*io' > set_ftrace_filter # cat set_ftrace_filter | grep 'req_bio_endio' # cat available_filter_functions | grep 'req_bio_endio' req_bio_endio Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> LKML-Reference: <4B4E870E.6060607@cn.fujitsu.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff
kernel/trace/ftrace.c
... | ... | @@ -1690,7 +1690,7 @@ |
1690 | 1690 | static int ftrace_match(char *str, char *regex, int len, int type) |
1691 | 1691 | { |
1692 | 1692 | int matched = 0; |
1693 | - char *ptr; | |
1693 | + int slen; | |
1694 | 1694 | |
1695 | 1695 | switch (type) { |
1696 | 1696 | case MATCH_FULL: |
... | ... | @@ -1706,8 +1706,8 @@ |
1706 | 1706 | matched = 1; |
1707 | 1707 | break; |
1708 | 1708 | case MATCH_END_ONLY: |
1709 | - ptr = strstr(str, regex); | |
1710 | - if (ptr && (ptr[len] == 0)) | |
1709 | + slen = strlen(str); | |
1710 | + if (slen >= len && memcmp(str + slen - len, regex, len) == 0) | |
1711 | 1711 | matched = 1; |
1712 | 1712 | break; |
1713 | 1713 | } |