[PATCH bpf-next 0/2] bpf: fix use of trace_printk() in BPF

From: Alan Maguire
Date: Fri Jul 03 2020 - 10:45:30 EST


Steven suggested a way to resolve the appearance of the warning banner
that appears as a result of using trace_printk() in BPF [1].
Applying the patch and testing reveals all works as expected; we
can call bpf_trace_printk() and see the trace messages in
/sys/kernel/debug/tracing/trace_pipe and no banner message appears.

Also add a test prog to verify basic bpf_trace_printk() helper behaviour.

Possible future work: ftrace supports trace instances, and one thing
that strikes me is that we could make use of these in BPF to separate
BPF program bpf_trace_printk() output from output of other tracing
activities.

I was thinking something like a sysctl net.core.bpf_trace_instance,
defaulting to an empty value signifying we use the root trace
instance. This would preserve existing behaviour while giving a
way to separate BPF tracing output from other tracing output if wanted.

[1] https://lore.kernel.org/r/20200628194334.6238b933@xxxxxxxxxxxxxxxx

Alan Maguire (2):
bpf: use dedicated bpf_trace_printk event instead of trace_printk()
selftests/bpf: add selftests verifying bpf_trace_printk() behaviour

kernel/trace/Makefile | 2 +
kernel/trace/bpf_trace.c | 41 +++++++++++--
kernel/trace/bpf_trace.h | 34 +++++++++++
.../selftests/bpf/prog_tests/trace_printk.c | 71 ++++++++++++++++++++++
tools/testing/selftests/bpf/progs/trace_printk.c | 21 +++++++
5 files changed, 165 insertions(+), 4 deletions(-)
create mode 100644 kernel/trace/bpf_trace.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/trace_printk.c
create mode 100644 tools/testing/selftests/bpf/progs/trace_printk.c

--
1.8.3.1