|
@@ -428,41 +428,25 @@ static void *event_file_data(struct file *filp)
|
|
|
|
|
|
static void remove_event_file_dir(struct ftrace_event_file *file)
|
|
|
{
|
|
|
+ struct dentry *dir = file->dir;
|
|
|
+ struct dentry *child;
|
|
|
+
|
|
|
+ if (dir) {
|
|
|
+ spin_lock(&dir->d_lock); /* probably unneeded */
|
|
|
+ list_for_each_entry(child, &dir->d_subdirs, d_u.d_child) {
|
|
|
+ if (child->d_inode) /* probably unneeded */
|
|
|
+ child->d_inode->i_private = NULL;
|
|
|
+ }
|
|
|
+ spin_unlock(&dir->d_lock);
|
|
|
+
|
|
|
+ debugfs_remove_recursive(dir);
|
|
|
+ }
|
|
|
+
|
|
|
list_del(&file->list);
|
|
|
- debugfs_remove_recursive(file->dir);
|
|
|
remove_subsystem(file->system);
|
|
|
kmem_cache_free(file_cachep, file);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Open and update trace_array ref count.
|
|
|
- * Must have the current trace_array passed to it.
|
|
|
- */
|
|
|
-static int tracing_open_generic_file(struct inode *inode, struct file *filp)
|
|
|
-{
|
|
|
- struct ftrace_event_file *file = inode->i_private;
|
|
|
- struct trace_array *tr = file->tr;
|
|
|
- int ret;
|
|
|
-
|
|
|
- if (trace_array_get(tr) < 0)
|
|
|
- return -ENODEV;
|
|
|
-
|
|
|
- ret = tracing_open_generic(inode, filp);
|
|
|
- if (ret < 0)
|
|
|
- trace_array_put(tr);
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
-static int tracing_release_generic_file(struct inode *inode, struct file *filp)
|
|
|
-{
|
|
|
- struct ftrace_event_file *file = inode->i_private;
|
|
|
- struct trace_array *tr = file->tr;
|
|
|
-
|
|
|
- trace_array_put(tr);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* __ftrace_set_clr_event(NULL, NULL, NULL, set) will set/unset all events.
|
|
|
*/
|
|
@@ -1281,10 +1265,9 @@ static const struct file_operations ftrace_set_event_fops = {
|
|
|
};
|
|
|
|
|
|
static const struct file_operations ftrace_enable_fops = {
|
|
|
- .open = tracing_open_generic_file,
|
|
|
+ .open = tracing_open_generic,
|
|
|
.read = event_enable_read,
|
|
|
.write = event_enable_write,
|
|
|
- .release = tracing_release_generic_file,
|
|
|
.llseek = default_llseek,
|
|
|
};
|
|
|
|