All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Frederic Weisbecker <fweisbec@gmail.com>
Subject: [PATCH 14/19] tracing: Separate open function from set_event and available_events
Date: Fri, 02 Nov 2012 14:13:45 -0400	[thread overview]
Message-ID: <20121102181432.262987023@goodmis.org> (raw)
In-Reply-To: 20121102181331.513782854@goodmis.org

[-- Attachment #1: Type: text/plain, Size: 3619 bytes --]

From: Steven Rostedt <srostedt@redhat.com>

The open function used by available_events is the same as set_event even
though it uses different seq functions. This causes a side effect of
writing into available_events clearing all events, even though
available_events is suppose to be read only.

There's no reason to keep a single function for just the open and have
both use different functions for everything else. It is a little
confusing and causes strange behavior. Just have each have their own
function.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/trace_events.c |   46 +++++++++++++++++++++++++------------------
 1 file changed, 27 insertions(+), 19 deletions(-)

diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index dec47e7..cb2df3b 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -491,19 +491,6 @@ static void t_stop(struct seq_file *m, void *p)
 	mutex_unlock(&event_mutex);
 }
 
-static int
-ftrace_event_seq_open(struct inode *inode, struct file *file)
-{
-	const struct seq_operations *seq_ops;
-
-	if ((file->f_mode & FMODE_WRITE) &&
-	    (file->f_flags & O_TRUNC))
-		ftrace_clear_events();
-
-	seq_ops = inode->i_private;
-	return seq_open(file, seq_ops);
-}
-
 static ssize_t
 event_enable_read(struct file *filp, char __user *ubuf, size_t cnt,
 		  loff_t *ppos)
@@ -980,6 +967,9 @@ show_header(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)
 	return r;
 }
 
+static int ftrace_event_avail_open(struct inode *inode, struct file *file);
+static int ftrace_event_set_open(struct inode *inode, struct file *file);
+
 static const struct seq_operations show_event_seq_ops = {
 	.start = t_start,
 	.next = t_next,
@@ -995,14 +985,14 @@ static const struct seq_operations show_set_event_seq_ops = {
 };
 
 static const struct file_operations ftrace_avail_fops = {
-	.open = ftrace_event_seq_open,
+	.open = ftrace_event_avail_open,
 	.read = seq_read,
 	.llseek = seq_lseek,
 	.release = seq_release,
 };
 
 static const struct file_operations ftrace_set_event_fops = {
-	.open = ftrace_event_seq_open,
+	.open = ftrace_event_set_open,
 	.read = seq_read,
 	.write = ftrace_event_write,
 	.llseek = seq_lseek,
@@ -1078,6 +1068,26 @@ static struct dentry *event_trace_events_dir(void)
 	return d_events;
 }
 
+static int
+ftrace_event_avail_open(struct inode *inode, struct file *file)
+{
+	const struct seq_operations *seq_ops = &show_event_seq_ops;
+
+	return seq_open(file, seq_ops);
+}
+
+static int
+ftrace_event_set_open(struct inode *inode, struct file *file)
+{
+	const struct seq_operations *seq_ops = &show_set_event_seq_ops;
+
+	if ((file->f_mode & FMODE_WRITE) &&
+	    (file->f_flags & O_TRUNC))
+		ftrace_clear_events();
+
+	return seq_open(file, seq_ops);
+}
+
 static struct dentry *
 event_subsystem_dir(const char *name, struct dentry *d_events)
 {
@@ -1508,15 +1518,13 @@ static __init int event_trace_init(void)
 		return 0;
 
 	entry = debugfs_create_file("available_events", 0444, d_tracer,
-				    (void *)&show_event_seq_ops,
-				    &ftrace_avail_fops);
+				    NULL, &ftrace_avail_fops);
 	if (!entry)
 		pr_warning("Could not create debugfs "
 			   "'available_events' entry\n");
 
 	entry = debugfs_create_file("set_event", 0644, d_tracer,
-				    (void *)&show_set_event_seq_ops,
-				    &ftrace_set_event_fops);
+				    NULL, &ftrace_set_event_fops);
 	if (!entry)
 		pr_warning("Could not create debugfs "
 			   "'set_event' entry\n");
-- 
1.7.10.4



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

  parent reply	other threads:[~2012-11-02 18:15 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-02 18:13 [PATCH 00/19] [GIT PULL][3.8] tracing: updates (v2) Steven Rostedt
2012-11-02 18:13 ` [PATCH 01/19] tracing: Replace strict_strto* with kstrto* Steven Rostedt
2012-11-02 18:13 ` [PATCH 02/19] tracing: Allow tracers to start at core initcall Steven Rostedt
2012-11-02 18:13 ` [PATCH 03/19] tracing: Change tracers integer flags to bool Steven Rostedt
2012-11-02 18:13 ` [PATCH 04/19] ring-buffer: Add a dropped events counter Steven Rostedt
2012-11-02 18:13 ` [PATCH 05/19] tracing: Expand ring buffer when trace_printk() is used Steven Rostedt
2012-11-02 18:13 ` [PATCH 06/19] tracing: Enable comm recording if " Steven Rostedt
2012-11-02 18:13 ` [PATCH 07/19] tracing: Have tracing_sched_wakeup_trace() use standard unlock_commit Steven Rostedt
2012-11-02 18:13 ` [PATCH 08/19] tracing: Cache comms only after an event occurred Steven Rostedt
2012-11-02 18:13 ` [PATCH 09/19] tracing: Trivial cleanup Steven Rostedt
2012-11-02 18:13 ` [PATCH 10/19] tracing: Cleanup unnecessary function declarations Steven Rostedt
2012-11-02 18:13 ` [PATCH 11/19] linux/kernel.h: Remove duplicate trace_printk declaration Steven Rostedt
2012-11-02 18:13 ` [PATCH 12/19] tracing: Reset ring buffer when changing trace_clocks Steven Rostedt
2012-11-02 18:13 ` [PATCH 13/19] ring-buffer: Change unsigned long type of ring_buffer_oldest_event_ts() to u64 Steven Rostedt
2012-11-02 18:13 ` Steven Rostedt [this message]
2012-11-02 18:13 ` [PATCH 15/19] tracing: Remove unused function unregister_tracer() Steven Rostedt
2012-11-02 18:13 ` [PATCH 16/19] tracing: Make tracing_enabled be equal to tracing_on Steven Rostedt
2012-11-02 18:13 ` [PATCH 17/19] tracing: Remove deprecated tracing_enabled file Steven Rostedt
2012-11-02 18:13 ` [PATCH 18/19] tracing: Use irq_work for wake ups and remove *_nowake_*() functions Steven Rostedt
2012-11-02 18:13 ` [PATCH 19/19] tracing: Add trace_options kernel command line parameter Steven Rostedt
2012-11-09 12:16 ` [PATCH 00/19] [GIT PULL][3.8] tracing: updates (v2) Steven Rostedt
2012-11-14  6:18   ` Ingo Molnar

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=20121102181432.262987023@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=fweisbec@gmail.com \
    --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.