diff options
Diffstat (limited to 'kernel/trace/trace_kprobe.c')
| -rw-r--r-- | kernel/trace/trace_kprobe.c | 28 | 
1 files changed, 22 insertions, 6 deletions
| diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index a8fef6ab0872..e834f149695b 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c @@ -714,14 +714,30 @@ static int count_symbols(void *data, unsigned long unused)  	return 0;  } +struct sym_count_ctx { +	unsigned int count; +	const char *name; +}; + +static int count_mod_symbols(void *data, const char *name, unsigned long unused) +{ +	struct sym_count_ctx *ctx = data; + +	if (strcmp(name, ctx->name) == 0) +		ctx->count++; + +	return 0; +} +  static unsigned int number_of_same_symbols(char *func_name)  { -	unsigned int count; +	struct sym_count_ctx ctx = { .count = 0, .name = func_name }; + +	kallsyms_on_each_match_symbol(count_symbols, func_name, &ctx.count); -	count = 0; -	kallsyms_on_each_match_symbol(count_symbols, func_name, &count); +	module_kallsyms_on_each_symbol(NULL, count_mod_symbols, &ctx); -	return count; +	return ctx.count;  }  static int __trace_kprobe_create(int argc, const char *argv[]) @@ -1007,7 +1023,7 @@ EXPORT_SYMBOL_GPL(kprobe_event_cmd_init);   * @name: The name of the kprobe event   * @loc: The location of the kprobe event   * @kretprobe: Is this a return probe? - * @args: Variable number of arg (pairs), one pair for each field + * @...: Variable number of arg (pairs), one pair for each field   *   * NOTE: Users normally won't want to call this function directly, but   * rather use the kprobe_event_gen_cmd_start() wrapper, which automatically @@ -1080,7 +1096,7 @@ EXPORT_SYMBOL_GPL(__kprobe_event_gen_cmd_start);  /**   * __kprobe_event_add_fields - Add probe fields to a kprobe command from arg list   * @cmd: A pointer to the dynevent_cmd struct representing the new event - * @args: Variable number of arg (pairs), one pair for each field + * @...: Variable number of arg (pairs), one pair for each field   *   * NOTE: Users normally won't want to call this function directly, but   * rather use the kprobe_event_add_fields() wrapper, which |