Patch "tracing/kprobes: Allow to create probe with a module name starting with a digit" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
tracing/kprobes: Allow to create probe with a module name starting with a digit
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
9e52b32567126fe146f198971364f68d3bc5233fMon Sep 17 00:00:00 2001
From: Sabrina Dubroca <[email protected]>
Date: Thu, 22 Jun 2017 11:24:42 +0200
Subject: tracing/kprobes: Allow to create probe with a module name starting with a digit
From: Sabrina Dubroca <[email protected]>
commit 9e52b32567126fe146f198971364f68d3bc5233f upstream.
Always try to parse an address, since kstrtoul() will safely fail when given a symbol as input. If that fails (which will be the case for a symbol), try to parse a symbol instead.
This allows creating a probe such as:
p:probe/vlan_gro_receive 8021q:vlan_gro_receive+0
Which is necessary for this command to work:
perf probe -m 8021q -a vlan_gro_receive
--- kernel/trace/trace_kprobe.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-)
kernel/trace/trace_kprobe.c +8 -13
@@ -667,30 +667,25 @@ static int create_trace_kprobe(int argc,pr_info ("Probe point is not specified.\n" );return -EINVAL ; } -if (isdigit (argv[1 ][0 ])) { -if (is_return) { -pr_info ("Return probe point must be a symbol.\n" ); -return -EINVAL ; - } -/* an address specified */ - ret =kstrtoul (&argv[1 ][0 ],0 , (unsigned long *)&addr); -if (ret) { -pr_info ("Failed to parse address.\n" ); -return ret; - } - }else { + +/* try to parse an address. if that fails, try to read the +* input as a symbol. */ +if (kstrtoul (argv[1 ],0 , (unsigned long *)&addr)) {/* a symbol specified */ symbol = argv[1 ];/* TODO: support .init module functions */ ret =traceprobe_split_symbol_offset (symbol, &offset);if (ret) { -pr_info ("Failed to parse symbol.\n" ); +pr_info ("Failed to parse either an address or a symbol.\n" );return ret; }if (offset && is_return) {pr_info ("Return probe must be used without offset.\n" );return -EINVAL ; } + }else if (is_return) { +pr_info ("Return probe point must be a symbol.\n" ); +return -EINVAL ; } argc -=2 ; argv +=2 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch