Commit 5d6c97c5 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt

tracing: Do not try to recreated toplevel set_ftrace_* files

With the restructing of the function tracer working with instances, the
"top level" buffer is a bit special, as the function tracing is mapped
to the same set of filters. This is done by using a "global_ops" descriptor
and having the "set_ftrace_filter" and "set_ftrace_notrace" map to it.

When an instance is created, it creates the same files but its for the
local instance and not the global_ops.

The issues is that the local instance creation shares some code with
the global instance one and we end up trying to create th top level
"set_ftrace_*" files twice, and on boot up, we get an error like this:

 Could not create debugfs 'set_ftrace_filter' entry
 Could not create debugfs 'set_ftrace_notrace' entry

The reason they failed to be created was because they were created
twice, and the second time gives this error as you can not create the
same file twice.
Reported-by: default avatarBorislav Petkov <bp@alien8.de>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 17a280ea
...@@ -58,12 +58,16 @@ int ftrace_create_function_files(struct trace_array *tr, ...@@ -58,12 +58,16 @@ int ftrace_create_function_files(struct trace_array *tr,
{ {
int ret; int ret;
/* The top level array uses the "global_ops". */ /*
if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL)) { * The top level array uses the "global_ops", and the files are
ret = allocate_ftrace_ops(tr); * created on boot up.
if (ret) */
return ret; if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
} return 0;
ret = allocate_ftrace_ops(tr);
if (ret)
return ret;
ftrace_create_filter_files(tr->ops, parent); ftrace_create_filter_files(tr->ops, parent);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment