Skip to content

Commit

Permalink
trace: don't abort qemu if ftrace can't be initialized
Browse files Browse the repository at this point in the history
If the ftrace backend is compiled into QEMU, any attempt
to start QEMU while non-root will fail due to the
inability to open /sys/kernel/debug/tracing/tracing_on.

Add a fallback into the code so that it connects up the
trace_marker_fd variable to /dev/null when getting
EACCES on the 'trace_on' file. This allows QEMU to
run, with ftrace turned into a no-op.

[Fixed s/setting/getting/ and s/EACCESS/EACCES/ errors pointed out by
Eric Blake <[email protected]>.
--Stefan]

Signed-off-by: Daniel P. Berrange <[email protected]>
Message-id: [email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
  • Loading branch information
berrange authored and stefanhaRH committed Oct 12, 2016
1 parent 7f1b588 commit 8ed5372
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions trace/ftrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ bool ftrace_init(void)
snprintf(path, PATH_MAX, "%s/tracing/tracing_on", debugfs);
trace_fd = open(path, O_WRONLY);
if (trace_fd < 0) {
if (errno == EACCES) {
trace_marker_fd = open("/dev/null", O_WRONLY);
if (trace_marker_fd != -1) {
return true;
}
}
perror("Could not open ftrace 'tracing_on' file");
return false;
} else {
Expand Down

0 comments on commit 8ed5372

Please sign in to comment.