trace/kprobes: Sanitize derived event names
When we derive event names, convert some expected symbols (such as ':' used to specify module:name and '.' present in some symbols) into underscores so that the event name is not rejected. Before this patch: # echo 'p kobject_example:foo_store' > kprobe_events trace_kprobe: Failed to allocate trace_probe.(-22) -sh: write error: Invalid argument After this patch: # echo 'p kobject_example:foo_store' > kprobe_events # cat kprobe_events p:kprobes/p_kobject_example_foo_store_0 kobject_example:foo_store Link: http://lkml.kernel.org/r/66c189e09e71361aba91dd4a5bd146a1b62a7a51.1499453040.git.naveen.n.rao@linux.vnet.ibm.com Acked-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
29b1a8ad7d
commit
fca18a47cf
|
@ -598,6 +598,14 @@ static struct notifier_block trace_kprobe_module_nb = {
|
|||
.priority = 1 /* Invoked after kprobe module callback */
|
||||
};
|
||||
|
||||
/* Convert certain expected symbols into '_' when generating event names */
|
||||
static inline void sanitize_event_name(char *name)
|
||||
{
|
||||
while (*name++ != '\0')
|
||||
if (*name == ':' || *name == '.')
|
||||
*name = '_';
|
||||
}
|
||||
|
||||
static int create_trace_kprobe(int argc, char **argv)
|
||||
{
|
||||
/*
|
||||
|
@ -740,6 +748,7 @@ static int create_trace_kprobe(int argc, char **argv)
|
|||
else
|
||||
snprintf(buf, MAX_EVENT_NAME_LEN, "%c_0x%p",
|
||||
is_return ? 'r' : 'p', addr);
|
||||
sanitize_event_name(buf);
|
||||
event = buf;
|
||||
}
|
||||
tk = alloc_trace_kprobe(group, event, addr, symbol, offset, maxactive,
|
||||
|
|
Loading…
Reference in New Issue