"Not" is too abstract variable name - changed to clear_filter. Removed ftrace_match_module_records function: comparison with !* or * not does the general code in filter_parse_regex() as it works without mod command for sh# echo '!*' > /sys/kernel/debug/tracing/set_ftrace_filter Signed-off-by: Dmitry Safonov <0x7f454c46@xxxxxxxxx> --- kernel/trace/ftrace.c | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index f87401b..a56f028 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -3449,13 +3449,13 @@ static int ftrace_match(char *str, char *regex, int len, int type) } static int -enter_record(struct ftrace_hash *hash, struct dyn_ftrace *rec, int not) +enter_record(struct ftrace_hash *hash, struct dyn_ftrace *rec, int clear_filter) { struct ftrace_func_entry *entry; int ret = 0; entry = ftrace_lookup_ip(hash, rec->ip); - if (not) { + if (clear_filter) { /* Do nothing if it doesn't exist */ if (!entry) return 0; @@ -3494,8 +3494,7 @@ ftrace_match_record(struct dyn_ftrace *rec, char *mod, } static int -match_records(struct ftrace_hash *hash, char *buff, - int len, char *mod, int not) +match_records(struct ftrace_hash *hash, char *buff, int len, char *mod) { unsigned search_len = 0; struct ftrace_page *pg; @@ -3504,9 +3503,10 @@ match_records(struct ftrace_hash *hash, char *buff, char *search = buff; int found = 0; int ret; + int clear_filter; if (len) { - type = filter_parse_regex(buff, len, &search, ¬); + type = filter_parse_regex(buff, len, &search, &clear_filter); search_len = strlen(search); } @@ -3517,7 +3517,7 @@ match_records(struct ftrace_hash *hash, char *buff, do_for_each_ftrace_rec(pg, rec) { if (ftrace_match_record(rec, mod, search, search_len, type)) { - ret = enter_record(hash, rec, not); + ret = enter_record(hash, rec, clear_filter); if (ret < 0) { found = ret; goto out_unlock; @@ -3534,26 +3534,9 @@ match_records(struct ftrace_hash *hash, char *buff, static int ftrace_match_records(struct ftrace_hash *hash, char *buff, int len) { - return match_records(hash, buff, len, NULL, 0); + return match_records(hash, buff, len, NULL); } -static int -ftrace_match_module_records(struct ftrace_hash *hash, char *buff, char *mod) -{ - int not = 0; - - /* blank or '*' mean the same */ - if (strcmp(buff, "*") == 0) - buff[0] = 0; - - /* handle the case of 'dont filter this module' */ - if (strcmp(buff, "!") == 0 || strcmp(buff, "!*") == 0) { - buff[0] = 0; - not = 1; - } - - return match_records(hash, buff, strlen(buff), mod, not); -} /* * We register the module command as a template to show others how @@ -3562,7 +3545,7 @@ ftrace_match_module_records(struct ftrace_hash *hash, char *buff, char *mod) static int ftrace_mod_callback(struct ftrace_hash *hash, - char *func, char *cmd, char *param, int enable) + char *func, char *cmd, char *module, int enable) { int ret; @@ -3575,10 +3558,10 @@ ftrace_mod_callback(struct ftrace_hash *hash, */ /* we must have a module name */ - if (!param || !strlen(param)) + if (!module || !strlen(module)) return -EINVAL; - ret = ftrace_match_module_records(hash, func, param); + ret = match_records(hash, func, strlen(func), module); if (ret == 0) return -EINVAL; if (ret < 0) -- 2.5.3 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html