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;
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]
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;