diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2016-10-04 14:35:51 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2016-10-12 09:35:54 +0200 |
commit | 8ed5372874377af4a84a330eeaff1d9d663ca930 (patch) | |
tree | 56df50260e123fea831136b9f3a4b9066cb34430 /trace/ftrace.c | |
parent | 7f1b588f20d027730676e627713ae3bbf6baab04 (diff) | |
download | qemu-8ed5372874377af4a84a330eeaff1d9d663ca930.zip qemu-8ed5372874377af4a84a330eeaff1d9d663ca930.tar.gz qemu-8ed5372874377af4a84a330eeaff1d9d663ca930.tar.bz2 |
trace: don't abort qemu if ftrace can't be initialized
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 <eblake@redhat.com>.
--Stefan]
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 1475588159-30598-13-git-send-email-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'trace/ftrace.c')
-rw-r--r-- | trace/ftrace.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/trace/ftrace.c b/trace/ftrace.c index e953922..3588bb0 100644 --- a/trace/ftrace.c +++ b/trace/ftrace.c @@ -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 { |