Home Home > GIT Browse > SLE11-SP4
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Benes <mbenes@suse.cz>2018-12-27 15:12:59 +0100
committerMiroslav Benes <mbenes@suse.cz>2018-12-27 15:12:59 +0100
commit060dfa18414a5bece431e94e900cb23efb474ba2 (patch)
treeaf996a109c5aee95726fe47b9db7f8c22eab815d
parentebe2119d87eb0f115219a7ebea604700d2544372 (diff)
tracing/kprobes: Allow to create probe with a module name
starting with a digit (bsc#1120336).
-rw-r--r--patches.fixes/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch73
-rw-r--r--series.conf1
2 files changed, 74 insertions, 0 deletions
diff --git a/patches.fixes/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch b/patches.fixes/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch
new file mode 100644
index 0000000000..82ad842892
--- /dev/null
+++ b/patches.fixes/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch
@@ -0,0 +1,73 @@
+From: Sabrina Dubroca <sd@queasysnail.net>
+Date: Thu, 22 Jun 2017 11:24:42 +0200
+Subject: tracing/kprobes: Allow to create probe with a module name starting
+ with a digit
+Git-commit: 9e52b32567126fe146f198971364f68d3bc5233f
+Patch-mainline: v4.12
+References: bsc#1120336
+
+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
+
+Link: http://lkml.kernel.org/r/fd72d666f45b114e2c5b9cf7e27b91de1ec966f1.1498122881.git.sd@queasysnail.net
+
+Cc: stable@vger.kernel.org
+Fixes: 413d37d1e ("tracing: Add kprobe-based event tracer")
+Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
+Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
+Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Acked-by: Miroslav Benes <mbenes@suse.cz>
+---
+ kernel/trace/trace_kprobe.c | 21 ++++++++-------------
+ 1 file changed, 8 insertions(+), 13 deletions(-)
+
+--- a/kernel/trace/trace_kprobe.c
++++ b/kernel/trace/trace_kprobe.c
+@@ -1070,30 +1070,25 @@ static int create_trace_probe(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 = strict_strtoul(&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 (strict_strtoul(argv[1], 0, (unsigned long *)&addr)) {
+ /* a symbol specified */
+ symbol = argv[1];
+ /* TODO: support .init module functions */
+ ret = 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;
+
diff --git a/series.conf b/series.conf
index cbb3773ebb..1d8df6719d 100644
--- a/series.conf
+++ b/series.conf
@@ -23189,6 +23189,7 @@
patches.fixes/tracing-fix-check-for-cpu-online-when-event-is-disabled.patch
patches.fixes/tracing-move-mutex-to-protect-against-resetting-of-seq-data.patch
patches.fixes/tracing-add-undef-to-fix-compile-error.patch
+ patches.fixes/tracing-kprobes-allow-to-create-probe-with-a-module-name-starting-with-a-digit.patch
########################################################
# KVM patches