From: Yonghong Song <yhs@fb.com>
To: <ast@fb.com>, <daniel@iogearbox.net>, <netdev@vger.kernel.org>
Cc: <kernel-team@fb.com>
Subject: [RFC PATCH bpf-next 0/6] bpf: add bpf_get_stack_helper
Date: Fri, 6 Apr 2018 14:48:40 -0700 [thread overview]
Message-ID: <20180406214846.916265-1-yhs@fb.com> (raw)
Currently, stackmap and bpf_get_stackid helper are provided
for bpf program to get the stack trace. This approach has
a limitation though. If two stack traces have the same hash,
only one will get stored in the stackmap table,
so some stack traces are missing from user perspective.
This patch implements a new helper, bpf_get_stack, will
send stack traces directly to bpf program. The bpf program
is able to see all stack traces, and then can do in-kernel
processing or send stack traces to user space through
shared map or bpf_perf_event_output.
Patches #1 and #2 implemented the core kernel support.
Patch #3 synced the new helper to tools headers.
Patches #4 and #5 added a test in samples/bpf by attaching
to a kprobe, and Patch #6 added a test in tools/bpf by
attaching to a tracepoint.
Yonghong Song (6):
bpf: change prototype for stack_map_get_build_id_offset
bpf: add bpf_get_stack helper
tools/bpf: add bpf_get_stack helper to tools headers
samples/bpf: move common-purpose perf_event functions to bpf_load.c
samples/bpf: add a test for bpf_get_stack helper
tools/bpf: add a test case for bpf_get_stack helper
include/linux/bpf.h | 1 +
include/linux/filter.h | 3 +-
include/uapi/linux/bpf.h | 17 ++-
kernel/bpf/stackmap.c | 69 ++++++++--
kernel/bpf/syscall.c | 12 +-
kernel/bpf/verifier.c | 3 +
kernel/trace/bpf_trace.c | 50 +++++++-
samples/bpf/Makefile | 4 +
samples/bpf/bpf_load.c | 104 +++++++++++++++
samples/bpf/bpf_load.h | 5 +
samples/bpf/trace_get_stack_kern.c | 80 ++++++++++++
samples/bpf/trace_get_stack_user.c | 150 ++++++++++++++++++++++
samples/bpf/trace_output_user.c | 113 ++--------------
tools/include/uapi/linux/bpf.h | 17 ++-
tools/testing/selftests/bpf/bpf_helpers.h | 2 +
tools/testing/selftests/bpf/test_progs.c | 41 +++++-
tools/testing/selftests/bpf/test_stacktrace_map.c | 20 ++-
17 files changed, 568 insertions(+), 123 deletions(-)
create mode 100644 samples/bpf/trace_get_stack_kern.c
create mode 100644 samples/bpf/trace_get_stack_user.c
--
2.9.5
next reply other threads:[~2018-04-06 21:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-06 21:48 Yonghong Song [this message]
2018-04-06 21:48 ` [RFC PATCH bpf-next 1/6] bpf: change prototype for stack_map_get_build_id_offset Yonghong Song
2018-04-06 21:48 ` [RFC PATCH bpf-next 2/6] bpf: add bpf_get_stack helper Yonghong Song
2018-04-09 3:34 ` Alexei Starovoitov
2018-04-09 4:53 ` Yonghong Song
2018-04-09 5:02 ` Alexei Starovoitov
2018-04-09 10:01 ` Daniel Borkmann
2018-04-09 16:52 ` Yonghong Song
2018-04-06 21:48 ` [RFC PATCH bpf-next 3/6] tools/bpf: add bpf_get_stack helper to tools headers Yonghong Song
2018-04-06 21:48 ` [RFC PATCH bpf-next 4/6] samples/bpf: move common-purpose perf_event functions to bpf_load.c Yonghong Song
2018-04-06 21:48 ` [RFC PATCH bpf-next 5/6] samples/bpf: add a test for bpf_get_stack helper Yonghong Song
2018-04-06 21:48 ` [RFC PATCH bpf-next 6/6] tools/bpf: add a test case " Yonghong Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180406214846.916265-1-yhs@fb.com \
--to=yhs@fb.com \
--cc=ast@fb.com \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).