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>
This commit is contained in:
		
							parent
							
								
									7f1b588f20
								
							
						
					
					
						commit
						8ed5372874
					
				@ -51,6 +51,12 @@ bool ftrace_init(void)
 | 
				
			|||||||
        snprintf(path, PATH_MAX, "%s/tracing/tracing_on", debugfs);
 | 
					        snprintf(path, PATH_MAX, "%s/tracing/tracing_on", debugfs);
 | 
				
			||||||
        trace_fd = open(path, O_WRONLY);
 | 
					        trace_fd = open(path, O_WRONLY);
 | 
				
			||||||
        if (trace_fd < 0) {
 | 
					        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");
 | 
					            perror("Could not open ftrace 'tracing_on' file");
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user