From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: Yonghong Song <yhs@fb.com>
Cc: ast@fb.com, daniel@iogearbox.net, netdev@vger.kernel.org,
kernel-team@fb.com
Subject: Re: [PATCH bpf-next v9 00/10] bpf: add bpf_get_stack helper
Date: Sun, 29 Apr 2018 08:55:08 -0700 [thread overview]
Message-ID: <20180429155506.opzecjjgmtswu24k@ast-mbp> (raw)
In-Reply-To: <20180429052816.2882032-1-yhs@fb.com>
On Sat, Apr 28, 2018 at 10:28:06PM -0700, Yonghong Song wrote:
> 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 regardless of
> whether BPF_F_REUSE_STACKID is specified or not,
> so some stack traces may be 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 removes two never-hit branches in verifier.
> Patches #4 and #5 are two verifier improves to make
> bpf programming easier. Patch #6 synced the new helper
> to tools headers. Patch #7 moved perf_event polling code
> and ksym lookup code from samples/bpf to
> tools/testing/selftests/bpf. Patch #8 added a verifier
> test in tools/bpf for new verifier change.
> Patches #9 and #10 added tests for raw tracepoint prog
> and tracepoint prog respectively.
>
> Changelogs:
> v8 -> v9:
> . make function perf_event_mmap (in trace_helpers.c) extern
> to decouple perf_event_mmap and perf_event_poller.
> . add jit enabled handling for kernel stack verification
> in Patch #9. Since we did not have a good way to
> verify jit enabled kernel stack, just return true if
> the kernel stack is not empty.
> . In path #9, using raw_syscalls/sys_enter instead of
> sched/sched_switch, removed calling cmd
> "task 1 dd if=/dev/zero of=/dev/null" which is left
> with dangling process after the program exited.
>
> v7 -> v8:
> . rebase on top of latest bpf-next
> . simplify BPF_ARSH dst_reg->smin_val/smax_value tracking
> . rewrite the description of bpf_get_stack() in uapi bpf.h
> based on new format.
> v6 -> v7:
> . do perf callchain buffer allocation inside the
> verifier. so if the prog->has_callchain_buf is set,
> it is guaranteed that the buffer has been allocated.
> . change condition "trace_nr <= skip" to "trace_nr < skip"
> so that for zero size buffer, return 0 instead of -EFAULT
> v5 -> v6:
> . after refining return register smax_value and umax_value
> for helpers bpf_get_stack and bpf_probe_read_str,
> bounds and var_off of the return register are further refined.
> . added missing commit message for tools header sync commit.
> . removed one unnecessary empty line.
> v4 -> v5:
> . relied on dst_reg->var_off to refine umin_val/umax_val
> in verifier handling BPF_ARSH value range tracking,
> suggested by Edward.
> v3 -> v4:
> . fixed a bug when meta ptr is set to NULL in check_func_arg.
> . introduced tnum_arshift and added detailed comments for
> the underlying implementation
> . avoided using VLA in tools/bpf test_progs.
> v2 -> v3:
> . used meta to track helper memory size argument
> . implemented range checking for ARSH in verifier
> . moved perf event polling and ksym related functions
> from samples/bpf to tools/bpf
> . added test to compare build id's between bpf_get_stackid
> and bpf_get_stack
> v1 -> v2:
> . fixed compilation error when CONFIG_PERF_EVENTS is not enabled
Applied, Thanks Yonghong.
prev parent reply other threads:[~2018-04-29 15:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-29 5:28 [PATCH bpf-next v9 00/10] bpf: add bpf_get_stack helper Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 01/10] bpf: change prototype for stack_map_get_build_id_offset Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 02/10] bpf: add bpf_get_stack helper Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 03/10] bpf/verifier: refine retval R0 state for " Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 04/10] bpf: remove never-hit branches in verifier adjust_scalar_min_max_vals Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 05/10] bpf/verifier: improve register value range tracking with ARSH Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 06/10] tools/bpf: add bpf_get_stack helper to tools headers Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 07/10] samples/bpf: move common-purpose trace functions to selftests Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 08/10] tools/bpf: add a verifier test case for bpf_get_stack helper and ARSH Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 09/10] tools/bpf: add a test for bpf_get_stack with raw tracepoint prog Yonghong Song
2018-04-29 5:28 ` [PATCH bpf-next v9 10/10] tools/bpf: add a test for bpf_get_stack with " Yonghong Song
2018-04-29 15:55 ` Alexei Starovoitov [this message]
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=20180429155506.opzecjjgmtswu24k@ast-mbp \
--to=alexei.starovoitov@gmail.com \
--cc=ast@fb.com \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=netdev@vger.kernel.org \
--cc=yhs@fb.com \
/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