• A
    bpf: Refactor BPF_PROG_RUN_ARRAY family of macros into functions · 7d08c2c9
    Andrii Nakryiko 提交于
    Similar to BPF_PROG_RUN, turn BPF_PROG_RUN_ARRAY macros into proper functions
    with all the same readability and maintainability benefits. Making them into
    functions required shuffling around bpf_set_run_ctx/bpf_reset_run_ctx
    functions. Also, explicitly specifying the type of the BPF prog run callback
    required adjusting __bpf_prog_run_save_cb() to accept const void *, casted
    internally to const struct sk_buff.
    
    Further, split out a cgroup-specific BPF_PROG_RUN_ARRAY_CG and
    BPF_PROG_RUN_ARRAY_CG_FLAGS from the more generic BPF_PROG_RUN_ARRAY due to
    the differences in bpf_run_ctx used for those two different use cases.
    
    I think BPF_PROG_RUN_ARRAY_CG would benefit from further refactoring to accept
    struct cgroup and enum bpf_attach_type instead of bpf_prog_array, fetching
    cgrp->bpf.effective[type] and RCU-dereferencing it internally. But that
    required including include/linux/cgroup-defs.h, which I wasn't sure is ok with
    everyone.
    
    The remaining generic BPF_PROG_RUN_ARRAY function will be extended to
    pass-through user-provided context value in the next patch.
    Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: NYonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20210815070609.987780-3-andrii@kernel.org
    7d08c2c9
bpf.h 69.4 KB