FAILED: patch "[PATCH] tracing/kprobes: Allow to create probe with a module name" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
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: [PATCH] tracing/kprobes: Allow to create probe with a module name
starting with a digit
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 +5 -9
@@ -707,20 +707,16 @@ static int create_trace_kprobe(int argc, char **argv)pr_info ("Probe point is not specified.\n" );return -EINVAL ; } -if (isdigit (argv[1 ][0 ])) { -/* 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 &&