From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [for-next][PATCH 4/7] ftrace: Update func_pos in t_start() when all functions are enabled
Date: Wed, 05 Apr 2017 12:21:13 -0400 [thread overview]
Message-ID: <20170405162147.273337407@goodmis.org> (raw)
In-Reply-To: 20170405162109.825936532@goodmis.org
[-- Attachment #1: 0004-ftrace-Update-func_pos-in-t_start-when-all-functions.patch --]
[-- Type: text/plain, Size: 1745 bytes --]
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
If all functions are enabled, there's a comment displayed in the file to
denote that:
# cd /sys/kernel/debug/tracing
# cat set_ftrace_filter
#### all functions enabled ####
If a function trigger is set, those are displayed as well:
# echo schedule:traceoff >> /debug/tracing/set_ftrace_filter
# cat set_ftrace_filter
#### all functions enabled ####
schedule:traceoff:unlimited
But if you read that file with dd, the output can change:
# dd if=/debug/tracing/set_ftrace_filter bs=1
#### all functions enabled ####
32+0 records in
32+0 records out
32 bytes copied, 7.0237e-05 s, 456 kB/s
This is because the "pos" variable is updated for the comment, but func_pos
is not. "func_pos" is used by the triggers (or hashes) to know how many
functions were printed and it bases its index from the pos - func_pos.
func_pos should be 1 to count for the comment printed. But since it is not,
t_hash_start() thinks that one trigger was already printed.
The cat gets to t_hash_start() via t_next() and not t_start() which updates
both pos and func_pos.
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
kernel/trace/ftrace.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 421530831ddd..d4b18ce9ba88 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3230,6 +3230,7 @@ static void *t_start(struct seq_file *m, loff_t *pos)
*/
if ((iter->flags & (FTRACE_ITER_FILTER | FTRACE_ITER_NOTRACE)) &&
ftrace_hash_empty(iter->hash)) {
+ iter->func_pos = 1; /* Account for the message */
if (*pos > 0)
return t_hash_start(m, pos);
iter->flags |= FTRACE_ITER_PRINTALL;
--
2.10.2
next prev parent reply other threads:[~2017-04-05 16:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-05 16:21 [for-next][PATCH 0/7] tracing: Updates to filter probes and early ftrace init Steven Rostedt
2017-04-05 16:21 ` [for-next][PATCH 1/7] ftrace: Clean up __seq_open_private() return check Steven Rostedt
2017-04-05 16:21 ` [for-next][PATCH 2/7] ftrace: Assign iter->hash to filter or notrace hashes on seq read Steven Rostedt
2017-04-05 16:21 ` [for-next][PATCH 3/7] ftrace: Return NULL at end of t_start() instead of calling t_hash_start() Steven Rostedt
2017-04-05 16:21 ` Steven Rostedt [this message]
2017-04-05 16:21 ` [for-next][PATCH 5/7] ftrace: Create separate t_func_next() to simplify the function / hash logic Steven Rostedt
2017-04-05 16:21 ` [for-next][PATCH 6/7] ftrace: Have init/main.c call ftrace directly to free init memory Steven Rostedt
2017-04-05 16:21 ` [for-next][PATCH 7/7] tracing/kprobes: expose maxactive for kretprobe in kprobe_events Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170405162147.273337407@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.