mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	The bpf helper bpf_trace_printk() uses trace_printk() under the hood. This leads to an alarming warning message originating from trace buffer allocation which occurs the first time a program using bpf_trace_printk() is loaded. We can instead create a trace event for bpf_trace_printk() and enable it in-kernel when/if we encounter a program using the bpf_trace_printk() helper. With this approach, trace_printk() is not used directly and no warning message appears. This work was started by Steven (see Link) and finished by Alan; added Steven's Signed-off-by with his permission. Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Alan Maguire <alan.maguire@oracle.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/r/20200628194334.6238b933@oasis.local.home Link: https://lore.kernel.org/bpf/1594641154-18897-2-git-send-email-alan.maguire@oracle.com
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			633 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			633 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#undef TRACE_SYSTEM
 | 
						|
#define TRACE_SYSTEM bpf_trace
 | 
						|
 | 
						|
#if !defined(_TRACE_BPF_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
 | 
						|
 | 
						|
#define _TRACE_BPF_TRACE_H
 | 
						|
 | 
						|
#include <linux/tracepoint.h>
 | 
						|
 | 
						|
TRACE_EVENT(bpf_trace_printk,
 | 
						|
 | 
						|
	TP_PROTO(const char *bpf_string),
 | 
						|
 | 
						|
	TP_ARGS(bpf_string),
 | 
						|
 | 
						|
	TP_STRUCT__entry(
 | 
						|
		__string(bpf_string, bpf_string)
 | 
						|
	),
 | 
						|
 | 
						|
	TP_fast_assign(
 | 
						|
		__assign_str(bpf_string, bpf_string);
 | 
						|
	),
 | 
						|
 | 
						|
	TP_printk("%s", __get_str(bpf_string))
 | 
						|
);
 | 
						|
 | 
						|
#endif /* _TRACE_BPF_TRACE_H */
 | 
						|
 | 
						|
#undef TRACE_INCLUDE_PATH
 | 
						|
#define TRACE_INCLUDE_PATH .
 | 
						|
#define TRACE_INCLUDE_FILE bpf_trace
 | 
						|
 | 
						|
#include <trace/define_trace.h>
 |