diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2016-11-22 18:32:03 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2016-11-22 18:32:03 -0500 |
commit | 7d436400223bb46e9f88e6bba6f8d867acf0d82c (patch) | |
tree | 7b4a3f9b4fc7f9e328616a01b9593f9db0197e6b | |
parent | 9dfed80d87ca2c365cd1004a91ef4ed716c8e44e (diff) | |
download | linux-7d436400223bb46e9f88e6bba6f8d867acf0d82c.tar.gz linux-7d436400223bb46e9f88e6bba6f8d867acf0d82c.tar.bz2 linux-7d436400223bb46e9f88e6bba6f8d867acf0d82c.zip |
tracing: Add error checks to creation of event files
The creation of the set_event_pid file was assigned to a variable "entry"
but that variable was never used. Ideally, it should be used to check if the
file was created and warn if it was not.
The files header_page, header_event should also be checked and a warning if
they fail to be created.
The "enable" file was moved up, as it is a more crucial file to have and a
hard failure (return -ENOMEM) should be returned if it is not created.
Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel/trace/trace_events.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 03c0a48c3ac4..ba67ede48822 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2843,20 +2843,32 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr) return -ENOMEM; } + entry = trace_create_file("enable", 0644, d_events, + tr, &ftrace_tr_enable_fops); + if (!entry) { + pr_warn("Could not create tracefs 'enable' entry\n"); + return -ENOMEM; + } + + /* There are not as crucial, just warn if they are not created */ + entry = tracefs_create_file("set_event_pid", 0644, parent, tr, &ftrace_set_event_pid_fops); + if (!entry) + pr_warn("Could not create tracefs 'set_event_pid' entry\n"); /* ring buffer internal formats */ - trace_create_file("header_page", 0444, d_events, - ring_buffer_print_page_header, - &ftrace_show_header_fops); - - trace_create_file("header_event", 0444, d_events, - ring_buffer_print_entry_header, - &ftrace_show_header_fops); + entry = trace_create_file("header_page", 0444, d_events, + ring_buffer_print_page_header, + &ftrace_show_header_fops); + if (!entry) + pr_warn("Could not create tracefs 'header_page' entry\n"); - trace_create_file("enable", 0644, d_events, - tr, &ftrace_tr_enable_fops); + entry = trace_create_file("header_event", 0444, d_events, + ring_buffer_print_entry_header, + &ftrace_show_header_fops); + if (!entry) + pr_warn("Could not create tracefs 'header_event' entry\n"); tr->event_dir = d_events; |