2010-02-10 16:23:50

by Heiko Carstens

[permalink] [raw]
Subject: [PATCH] tracing/kprobes: fix probe parsing

From: Heiko Carstens <[email protected]>

Trying to add a probe like

echo p:myprobe 0x10000 > /sys/kernel/debug/tracing/kprobe_events

will fail since the wrong pointer is passed to strict_strtoul
when trying to convert the address to an unsigned long.

Signed-off-by: Heiko Carstens <[email protected]>
---
kernel/trace/trace_kprobe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -689,7 +689,7 @@ static int create_trace_probe(int argc,
return -EINVAL;
}
/* an address specified */
- ret = strict_strtoul(&argv[0][2], 0, (unsigned long *)&addr);
+ ret = strict_strtoul(&argv[1][0], 0, (unsigned long *)&addr);
if (ret) {
pr_info("Failed to parse address.\n");
return ret;


2010-02-10 22:27:06

by Masami Hiramatsu

[permalink] [raw]
Subject: Re: [PATCH] tracing/kprobes: fix probe parsing

Heiko Carstens wrote:
> From: Heiko Carstens <[email protected]>
>
> Trying to add a probe like
>
> echo p:myprobe 0x10000 > /sys/kernel/debug/tracing/kprobe_events
>
> will fail since the wrong pointer is passed to strict_strtoul
> when trying to convert the address to an unsigned long.

Right, it's a bug! Thank you!


>
> Signed-off-by: Heiko Carstens <[email protected]>

Acked-by: Masami Hiramatsu <[email protected]>

> ---
> kernel/trace/trace_kprobe.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/kernel/trace/trace_kprobe.c
> +++ b/kernel/trace/trace_kprobe.c
> @@ -689,7 +689,7 @@ static int create_trace_probe(int argc,
> return -EINVAL;
> }
> /* an address specified */
> - ret = strict_strtoul(&argv[0][2], 0, (unsigned long *)&addr);
> + ret = strict_strtoul(&argv[1][0], 0, (unsigned long *)&addr);
> if (ret) {
> pr_info("Failed to parse address.\n");
> return ret;

--
Masami Hiramatsu

Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division

e-mail: [email protected]

2010-02-14 09:14:34

by Heiko Carstens

[permalink] [raw]
Subject: [tip:tracing/urgent] tracing/kprobes: Fix probe parsing

Commit-ID: a9bb18f36c8056f0712fb28c52c0f85d98438dfb
Gitweb: http://git.kernel.org/tip/a9bb18f36c8056f0712fb28c52c0f85d98438dfb
Author: Heiko Carstens <[email protected]>
AuthorDate: Wed, 10 Feb 2010 17:23:47 +0100
Committer: Ingo Molnar <[email protected]>
CommitDate: Sun, 14 Feb 2010 09:43:58 +0100

tracing/kprobes: Fix probe parsing

Trying to add a probe like:

echo p:myprobe 0x10000 > /sys/kernel/debug/tracing/kprobe_events

will fail since the wrong pointer is passed to strict_strtoul
when trying to convert the address to an unsigned long.

Signed-off-by: Heiko Carstens <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Steven Rostedt <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
---
kernel/trace/trace_kprobe.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 6ea90c0..50b1b82 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -689,7 +689,7 @@ static int create_trace_probe(int argc, char **argv)
return -EINVAL;
}
/* an address specified */
- ret = strict_strtoul(&argv[0][2], 0, (unsigned long *)&addr);
+ ret = strict_strtoul(&argv[1][0], 0, (unsigned long *)&addr);
if (ret) {
pr_info("Failed to parse address.\n");
return ret;