Probes fixes for v6.6-rc7:
- tracing/kprobes: Fix kernel-doc warnings for the variable length arguments. - tracing/kprobes: Fix to count the symbols in modules even if the module name is not specified so that user can probe the symbols in the modules without module name. -----BEGIN PGP SIGNATURE----- iQFPBAABCgA5FiEEh7BulGwFlgAOi5DV2/sHvwUrPxsFAmU82MUbHG1hc2FtaS5o aXJhbWF0c3VAZ21haWwuY29tAAoJENv7B78FKz8bMZ0H+wZHWVUsmqGLGNCt3gfi m2EJX83VMwY8PzpwZ5ezrx4ibAcUyo7Dhh8OniGgEazC3BNeggoUu/HwpirS22gI Tx0EMlgLOJQykauiUe6FPem0IbrlbQMI1gLplx6cVd8lgIYZQfMIM5gI0kuCywT3 Ka9sCgp6y3UKQNtHKFwtPRLYFTF3Afyy2C01wdsa800SEqeOAeTD9+8yz7ZnuFt+ bNgu6vJGFfJHkEkvYCwFFqZ1eIfXON6lUFpijNpCGvMN2h1XArLexSk8JRBf6j2+ 8+1FrRQsTXRk3G6v9uQABeK7z5W2F8gufmSFyBlXajbZp2HT6j4s2S86u5lP9P9J l1U= =etyx -----END PGP SIGNATURE----- Merge tag 'probes-fixes-v6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace Pull probes fixes from Masami Hiramatsu: - tracing/kprobes: Fix kernel-doc warnings for the variable length arguments - tracing/kprobes: Fix to count the symbols in modules even if the module name is not specified so that user can probe the symbols in the modules without module name * tag 'probes-fixes-v6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: tracing/kprobes: Fix symbol counting logic by looking at modules as well tracing/kprobes: Fix the description of variable length arguments
This commit is contained in:
commit
51a7691038
@ -714,14 +714,30 @@ static int count_symbols(void *data, unsigned long unused)
|
|||||||
return 0;
|
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)
|
static unsigned int number_of_same_symbols(char *func_name)
|
||||||
{
|
{
|
||||||
unsigned int count;
|
struct sym_count_ctx ctx = { .count = 0, .name = func_name };
|
||||||
|
|
||||||
count = 0;
|
kallsyms_on_each_match_symbol(count_symbols, func_name, &ctx.count);
|
||||||
kallsyms_on_each_match_symbol(count_symbols, func_name, &count);
|
|
||||||
|
|
||||||
return count;
|
module_kallsyms_on_each_symbol(NULL, count_mod_symbols, &ctx);
|
||||||
|
|
||||||
|
return ctx.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __trace_kprobe_create(int argc, const char *argv[])
|
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
|
* @name: The name of the kprobe event
|
||||||
* @loc: The location of the kprobe event
|
* @loc: The location of the kprobe event
|
||||||
* @kretprobe: Is this a return probe?
|
* @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
|
* NOTE: Users normally won't want to call this function directly, but
|
||||||
* rather use the kprobe_event_gen_cmd_start() wrapper, which automatically
|
* 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
|
* __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
|
* @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
|
* NOTE: Users normally won't want to call this function directly, but
|
||||||
* rather use the kprobe_event_add_fields() wrapper, which
|
* rather use the kprobe_event_add_fields() wrapper, which
|
||||||
|
Loading…
Reference in New Issue
Block a user