Messages in this thread Patch in this message | | | Date | Fri, 11 Dec 2009 17:59:42 +0800 | From | Li Zefan <> | Subject | [PATCH 4/4] tracing/filters: Fix MATCH_EBD_ONLY filter matching |
| |
For '*foo' pattern, we should allow any string ending with 'foo', but tracing filter incorrectly disallows strings matching regex expression ".*foo.*foo".
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> --- kernel/trace/trace_events_filter.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index bd492ce..9f96339 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -276,9 +276,10 @@ static int regex_match_middle(char *str, struct regex *r, int len) static int regex_match_end(char *str, struct regex *r, int len) { - char *ptr = strstr(str, r->pattern); + int strlen = len - 1; - if (ptr && (ptr[r->len] == 0)) + if (strlen >= r->len && + !memcmp(str + strlen - r->len, r->pattern, r->len)) return 1; return 0; } -- 1.6.3
| |