* [PATCH] tracing: fix trace_print_seq()
@ 2009-07-01 8:50 Xiao Guangrong
2009-07-01 14:01 ` Frederic Weisbecker
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Xiao Guangrong @ 2009-07-01 8:50 UTC (permalink / raw)
To: Ingo Molnar
Cc: Eduard - Gabriel Munteanu, Frederic Weisbecker, Steven Rostedt,
LKML
We will lose something if trace_seq->buffer[0] is 0, because the copy length
is calculated by strlen() in seq_puts(), so using seq_write() instead of
seq_puts().
There have a example:
after reboot:
# echo kmemtrace > current_tracer
# echo 0 > options/kmem_minimalistic
# cat trace
# tracer: kmemtrace
#
#
Nothing is exported, because the first byte of trace_seq->buffer[ ]
is KMEMTRACE_USER_ALLOC.
( the value of KMEMTRACE_USER_ALLOC is zero, seeing
kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
kernel/trace/trace_output.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 7938f3a..e0c2545 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -27,8 +27,7 @@ void trace_print_seq(struct seq_file *m, struct trace_seq *s)
{
int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
- s->buffer[len] = 0;
- seq_puts(m, s->buffer);
+ seq_write(m, s->buffer, len);
trace_seq_init(s);
}
--
1.6.1.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] tracing: fix trace_print_seq()
2009-07-01 8:50 [PATCH] tracing: fix trace_print_seq() Xiao Guangrong
@ 2009-07-01 14:01 ` Frederic Weisbecker
2009-07-02 5:57 ` Li Zefan
2009-07-01 14:06 ` [tip:tracing/urgent] tracing: Fix trace_print_seq() tip-bot for Xiao Guangrong
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Frederic Weisbecker @ 2009-07-01 14:01 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Ingo Molnar, Eduard - Gabriel Munteanu, Steven Rostedt, LKML
On Wed, Jul 01, 2009 at 04:50:25PM +0800, Xiao Guangrong wrote:
> We will lose something if trace_seq->buffer[0] is 0, because the copy length
> is calculated by strlen() in seq_puts(), so using seq_write() instead of
> seq_puts().
>
> There have a example:
> after reboot:
> # echo kmemtrace > current_tracer
> # echo 0 > options/kmem_minimalistic
> # cat trace
> # tracer: kmemtrace
> #
> #
> Nothing is exported, because the first byte of trace_seq->buffer[ ]
> is KMEMTRACE_USER_ALLOC.
> ( the value of KMEMTRACE_USER_ALLOC is zero, seeing
> kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> ---
> kernel/trace/trace_output.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
> index 7938f3a..e0c2545 100644
> --- a/kernel/trace/trace_output.c
> +++ b/kernel/trace/trace_output.c
> @@ -27,8 +27,7 @@ void trace_print_seq(struct seq_file *m, struct trace_seq *s)
> {
> int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
>
> - s->buffer[len] = 0;
> - seq_puts(m, s->buffer);
> + seq_write(m, s->buffer, len);
>
> trace_seq_init(s);
> }
> --
> 1.6.1.2
>
Looks good, thanks.
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
But having a '\0' in a non binary trace looks weird. Why do
we have such plain KMEMTRACE_USER_ALLOC whereas binary tracing
is not set, as your example shows it?
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:tracing/urgent] tracing: Fix trace_print_seq()
2009-07-01 8:50 [PATCH] tracing: fix trace_print_seq() Xiao Guangrong
2009-07-01 14:01 ` Frederic Weisbecker
@ 2009-07-01 14:06 ` tip-bot for Xiao Guangrong
2009-07-01 14:15 ` Pekka Enberg
2009-07-01 14:42 ` tip-bot for Xiao Guangrong
2009-07-02 6:54 ` tip-bot for Xiao Guangrong
3 siblings, 1 reply; 7+ messages in thread
From: tip-bot for Xiao Guangrong @ 2009-07-01 14:06 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, penberg, eduard.munteanu, xiaoguangrong,
fweisbec, rostedt, tglx, mingo
Commit-ID: 5c37f525657e879a17a27c83021602cd55837531
Gitweb: http://git.kernel.org/tip/5c37f525657e879a17a27c83021602cd55837531
Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
AuthorDate: Wed, 1 Jul 2009 16:50:25 +0800
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Wed, 1 Jul 2009 16:03:50 +0200
tracing: Fix trace_print_seq()
We will lose something if trace_seq->buffer[0] is 0, because the copy length
is calculated by strlen() in seq_puts(), so using seq_write() instead of
seq_puts().
There have a example:
after reboot:
# echo kmemtrace > current_tracer
# echo 0 > options/kmem_minimalistic
# cat trace
# tracer: kmemtrace
#
#
Nothing is exported, because the first byte of trace_seq->buffer[ ]
is KMEMTRACE_USER_ALLOC.
( the value of KMEMTRACE_USER_ALLOC is zero, seeing
kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
LKML-Reference: <4A4B2351.5010300@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/trace/trace_output.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 7938f3a..e0c2545 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -27,8 +27,7 @@ void trace_print_seq(struct seq_file *m, struct trace_seq *s)
{
int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
- s->buffer[len] = 0;
- seq_puts(m, s->buffer);
+ seq_write(m, s->buffer, len);
trace_seq_init(s);
}
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [tip:tracing/urgent] tracing: Fix trace_print_seq()
2009-07-01 14:06 ` [tip:tracing/urgent] tracing: Fix trace_print_seq() tip-bot for Xiao Guangrong
@ 2009-07-01 14:15 ` Pekka Enberg
0 siblings, 0 replies; 7+ messages in thread
From: Pekka Enberg @ 2009-07-01 14:15 UTC (permalink / raw)
To: mingo, hpa, linux-kernel, eduard.munteanu, xiaoguangrong,
fweisbec, rostedt, tglx, mingo
Cc: linux-tip-commits
On Wed, 2009-07-01 at 14:06 +0000, tip-bot for Xiao Guangrong wrote:
> Commit-ID: 5c37f525657e879a17a27c83021602cd55837531
> Gitweb: http://git.kernel.org/tip/5c37f525657e879a17a27c83021602cd55837531
> Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> AuthorDate: Wed, 1 Jul 2009 16:50:25 +0800
> Committer: Ingo Molnar <mingo@elte.hu>
> CommitDate: Wed, 1 Jul 2009 16:03:50 +0200
>
> tracing: Fix trace_print_seq()
>
> We will lose something if trace_seq->buffer[0] is 0, because the copy length
> is calculated by strlen() in seq_puts(), so using seq_write() instead of
> seq_puts().
>
> There have a example:
> after reboot:
>
> # echo kmemtrace > current_tracer
> # echo 0 > options/kmem_minimalistic
> # cat trace
> # tracer: kmemtrace
> #
> #
>
> Nothing is exported, because the first byte of trace_seq->buffer[ ]
> is KMEMTRACE_USER_ALLOC.
>
> ( the value of KMEMTRACE_USER_ALLOC is zero, seeing
> kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Pekka Enberg <penberg@cs.helsinki.fi>
> LKML-Reference: <4A4B2351.5010300@cn.fujitsu.com>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Nice catch!
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:tracing/urgent] tracing: Fix trace_print_seq()
2009-07-01 8:50 [PATCH] tracing: fix trace_print_seq() Xiao Guangrong
2009-07-01 14:01 ` Frederic Weisbecker
2009-07-01 14:06 ` [tip:tracing/urgent] tracing: Fix trace_print_seq() tip-bot for Xiao Guangrong
@ 2009-07-01 14:42 ` tip-bot for Xiao Guangrong
2009-07-02 6:54 ` tip-bot for Xiao Guangrong
3 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Xiao Guangrong @ 2009-07-01 14:42 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, penberg, eduard.munteanu, xiaoguangrong,
fweisbec, rostedt, tglx, mingo
Commit-ID: 393ab9a2a6cf958c9549e35bd88c03b9b3eae64e
Gitweb: http://git.kernel.org/tip/393ab9a2a6cf958c9549e35bd88c03b9b3eae64e
Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
AuthorDate: Wed, 1 Jul 2009 16:50:25 +0800
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Wed, 1 Jul 2009 16:41:31 +0200
tracing: Fix trace_print_seq()
We will lose something if trace_seq->buffer[0] is 0, because the copy length
is calculated by strlen() in seq_puts(), so using seq_write() instead of
seq_puts().
There have a example:
after reboot:
# echo kmemtrace > current_tracer
# echo 0 > options/kmem_minimalistic
# cat trace
# tracer: kmemtrace
#
#
Nothing is exported, because the first byte of trace_seq->buffer[ ]
is KMEMTRACE_USER_ALLOC.
( the value of KMEMTRACE_USER_ALLOC is zero, seeing
kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4A4B2351.5010300@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/trace/trace_output.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 7938f3a..e0c2545 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -27,8 +27,7 @@ void trace_print_seq(struct seq_file *m, struct trace_seq *s)
{
int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
- s->buffer[len] = 0;
- seq_puts(m, s->buffer);
+ seq_write(m, s->buffer, len);
trace_seq_init(s);
}
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] tracing: fix trace_print_seq()
2009-07-01 14:01 ` Frederic Weisbecker
@ 2009-07-02 5:57 ` Li Zefan
0 siblings, 0 replies; 7+ messages in thread
From: Li Zefan @ 2009-07-02 5:57 UTC (permalink / raw)
To: Frederic Weisbecker
Cc: Xiao Guangrong, Ingo Molnar, Eduard - Gabriel Munteanu,
Steven Rostedt, LKML
>> There have a example:
>> after reboot:
>> # echo kmemtrace > current_tracer
>> # echo 0 > options/kmem_minimalistic
>> # cat trace
>> # tracer: kmemtrace
>> #
>> #
>> Nothing is exported, because the first byte of trace_seq->buffer[ ]
>> is KMEMTRACE_USER_ALLOC.
>> ( the value of KMEMTRACE_USER_ALLOC is zero, seeing
>> kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
>>
...
> Looks good, thanks.
>
> Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
>
> But having a '\0' in a non binary trace looks weird. Why do
> we have such plain KMEMTRACE_USER_ALLOC whereas binary tracing
> is not set, as your example shows it?
>
Because of this commit:
| commit 42af9054c0eeed09ec58d13ec8bf52d225ebcfcc
| Author: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
| Date: Mon Mar 23 15:12:26 2009 +0200
|
| kmemtrace: restore original tracing data binary format, improve ABI
I think we should change it to use trace_event->binary() interface for
binary trace.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:tracing/urgent] tracing: Fix trace_print_seq()
2009-07-01 8:50 [PATCH] tracing: fix trace_print_seq() Xiao Guangrong
` (2 preceding siblings ...)
2009-07-01 14:42 ` tip-bot for Xiao Guangrong
@ 2009-07-02 6:54 ` tip-bot for Xiao Guangrong
3 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Xiao Guangrong @ 2009-07-02 6:54 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, penberg, eduard.munteanu, xiaoguangrong,
fweisbec, rostedt, tglx, mingo
Commit-ID: e1af3aec3e2e7d21d4b3054323779d478c19d907
Gitweb: http://git.kernel.org/tip/e1af3aec3e2e7d21d4b3054323779d478c19d907
Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
AuthorDate: Wed, 1 Jul 2009 16:50:25 +0800
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 2 Jul 2009 08:51:13 +0200
tracing: Fix trace_print_seq()
We will lose something if trace_seq->buffer[0] is 0, because the copy length
is calculated by strlen() in seq_puts(), so using seq_write() instead of
seq_puts().
There have a example:
after reboot:
# echo kmemtrace > current_tracer
# echo 0 > options/kmem_minimalistic
# cat trace
# tracer: kmemtrace
#
#
Nothing is exported, because the first byte of trace_seq->buffer[ ]
is KMEMTRACE_USER_ALLOC.
( the value of KMEMTRACE_USER_ALLOC is zero, seeing
kmemtrace_print_alloc_user() in kernel/trace/kmemtrace.c)
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4A4B2351.5010300@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/trace/trace_output.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 7938f3a..e0c2545 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -27,8 +27,7 @@ void trace_print_seq(struct seq_file *m, struct trace_seq *s)
{
int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
- s->buffer[len] = 0;
- seq_puts(m, s->buffer);
+ seq_write(m, s->buffer, len);
trace_seq_init(s);
}
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-07-02 6:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-01 8:50 [PATCH] tracing: fix trace_print_seq() Xiao Guangrong
2009-07-01 14:01 ` Frederic Weisbecker
2009-07-02 5:57 ` Li Zefan
2009-07-01 14:06 ` [tip:tracing/urgent] tracing: Fix trace_print_seq() tip-bot for Xiao Guangrong
2009-07-01 14:15 ` Pekka Enberg
2009-07-01 14:42 ` tip-bot for Xiao Guangrong
2009-07-02 6:54 ` tip-bot for Xiao Guangrong
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.