ac5a72ea5c
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
35 lines
633 B
C
35 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>
|