Netdev List
 help / color / mirror / Atom feed
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.

      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