1. 13 Dec, 2021 12 commits
  2. 12 Dec, 2021 8 commits
  3. 11 Dec, 2021 13 commits
  4. 10 Dec, 2021 7 commits
    • Jakub Kicinski's avatar
      Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next · be315829
      Jakub Kicinski authored
      Andrii Nakryiko says:
      
      ====================
      bpf-next 2021-12-10 v2
      
      We've added 115 non-merge commits during the last 26 day(s) which contain
      a total of 182 files changed, 5747 insertions(+), 2564 deletions(-).
      
      The main changes are:
      
      1) Various samples fixes, from Alexander Lobakin.
      
      2) BPF CO-RE support in kernel and light skeleton, from Alexei Starovoitov.
      
      3) A batch of new unified APIs for libbpf, logging improvements, version
         querying, etc. Also a batch of old deprecations for old APIs and various
         bug fixes, in preparation for libbpf 1.0, from Andrii Nakryiko.
      
      4) BPF documentation reorganization and improvements, from Christoph Hellwig
         and Dave Tucker.
      
      5) Support for declarative initialization of BPF_MAP_TYPE_PROG_ARRAY in
         libbpf, from Hengqi Chen.
      
      6) Verifier log fixes, from Hou Tao.
      
      7) Runtime-bounded loops support with bpf_loop() helper, from Joanne Koong.
      
      8) Extend branch record capturing to all platforms that support it,
         from Kajol Jain.
      
      9) Light skeleton codegen improvements, from Kumar Kartikeya Dwivedi.
      
      10) bpftool doc-generating script improvements, from Quentin Monnet.
      
      11) Two libbpf v0.6 bug fixes, from Shuyi Cheng and Vincent Minet.
      
      12) Deprecation warning fix for perf/bpf_counter, from Song Liu.
      
      13) MAX_TAIL_CALL_CNT unification and MIPS build fix for libbpf,
          from Tiezhu Yang.
      
      14) BTF_KING_TYPE_TAG follow-up fixes, from Yonghong Song.
      
      15) Selftests fixes and improvements, from Ilya Leoshkevich, Jean-Philippe
          Brucker, Jiri Olsa, Maxim Mikityanskiy, Tirthendu Sarkar, Yucong Sun,
          and others.
      
      * https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next: (115 commits)
        libbpf: Add "bool skipped" to struct bpf_map
        libbpf: Fix typo in btf__dedup@LIBBPF_0.0.2 definition
        bpftool: Switch bpf_object__load_xattr() to bpf_object__load()
        selftests/bpf: Remove the only use of deprecated bpf_object__load_xattr()
        selftests/bpf: Add test for libbpf's custom log_buf behavior
        selftests/bpf: Replace all uses of bpf_load_btf() with bpf_btf_load()
        libbpf: Deprecate bpf_object__load_xattr()
        libbpf: Add per-program log buffer setter and getter
        libbpf: Preserve kernel error code and remove kprobe prog type guessing
        libbpf: Improve logging around BPF program loading
        libbpf: Allow passing user log setting through bpf_object_open_opts
        libbpf: Allow passing preallocated log_buf when loading BTF into kernel
        libbpf: Add OPTS-based bpf_btf_load() API
        libbpf: Fix bpf_prog_load() log_buf logic for log_level 0
        samples/bpf: Remove unneeded variable
        bpf: Remove redundant assignment to pointer t
        selftests/bpf: Fix a compilation warning
        perf/bpf_counter: Use bpf_map_create instead of bpf_create_map
        samples: bpf: Fix 'unknown warning group' build warning on Clang
        samples: bpf: Fix xdp_sample_user.o linking with Clang
        ...
      ====================
      
      Link: https://lore.kernel.org/r/20211210234746.2100561-1-andrii@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      be315829
    • Shuyi Cheng's avatar
      libbpf: Add "bool skipped" to struct bpf_map · 229fae38
      Shuyi Cheng authored
      Fix error: "failed to pin map: Bad file descriptor, path:
      /sys/fs/bpf/_rodata_str1_1."
      
      In the old kernel, the global data map will not be created, see [0]. So
      we should skip the pinning of the global data map to avoid
      bpf_object__pin_maps returning error. Therefore, when the map is not
      created, we mark “map->skipped" as true and then check during relocation
      and during pinning.
      
      Fixes: 16e0c35c ("libbpf: Load global data maps lazily on legacy kernels")
      Signed-off-by: default avatarShuyi Cheng <chengshuyi@linux.alibaba.com>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      229fae38
    • Vincent Minet's avatar
      libbpf: Fix typo in btf__dedup@LIBBPF_0.0.2 definition · b69c5c07
      Vincent Minet authored
      The btf__dedup_deprecated name was misspelled in the definition of the
      compat symbol for btf__dedup. This leads it to be missing from the
      shared library.
      
      This fixes it.
      
      Fixes: 957d350a ("libbpf: Turn btf_dedup_opts into OPTS-based struct")
      Signed-off-by: default avatarVincent Minet <vincent@vincent-minet.net>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210063112.80047-1-vincent@vincent-minet.net
      b69c5c07
    • Alexei Starovoitov's avatar
      Merge branch 'Enhance and rework logging controls in libbpf' · bd6b3b35
      Alexei Starovoitov authored
      Andrii Nakryiko says:
      
      ====================
      
      Add new open options and per-program setters to control BTF and program
      loading log verboseness and allow providing custom log buffers to capture logs
      of interest. Note how custom log_buf and log_level are orthogonal, which
      matches previous (alas less customizable) behavior of libbpf, even though it
      sort of worked by accident: if someone specified log_level = 1 in
      bpf_object__load_xattr(), first attempt to load any BPF program resulted in
      wasted bpf() syscall with -EINVAL due to !!log_buf != !!log_level. Then on
      retry libbpf would allocated log_buffer and try again, after which prog
      loading would succeed and libbpf would print verbose program loading log
      through its print callback.
      
      This behavior is now documented and made more efficient, not wasting
      unnecessary syscall. But additionally, log_level can be controlled globally on
      a per-bpf_object level through bpf_object_open_opts, as well as on
      a per-program basis with bpf_program__set_log_buf() and
      bpf_program__set_log_level() APIs.
      
      Now that we have a more future-proof way to set log_level, deprecate
      bpf_object__load_xattr().
      
      v2->v3:
        - added log_buf selftests for bpf_prog_load() and bpf_btf_load();
        - fix !log_buf in bpf_prog_load (John);
        - fix log_level==0 in bpf_btf_load (thanks selftest!);
      
      v1->v2:
        - fix log_level == 0 handling of bpf_prog_load, add as patch #1 (Alexei);
        - add comments explaining log_buf_size overflow prevention (Alexei).
      ====================
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      bd6b3b35
    • Andrii Nakryiko's avatar
      bpftool: Switch bpf_object__load_xattr() to bpf_object__load() · b59e4ce8
      Andrii Nakryiko authored
      Switch all the uses of to-be-deprecated bpf_object__load_xattr() into
      a simple bpf_object__load() calls with optional log_level passed through
      open_opts.kernel_log_level, if -d option is specified.
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211209193840.1248570-13-andrii@kernel.org
      b59e4ce8
    • Andrii Nakryiko's avatar
      selftests/bpf: Remove the only use of deprecated bpf_object__load_xattr() · 3fc5fdcc
      Andrii Nakryiko authored
      Switch from bpf_object__load_xattr() to bpf_object__load() and
      kernel_log_level in bpf_object_open_opts.
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211209193840.1248570-12-andrii@kernel.org
      3fc5fdcc
    • Andrii Nakryiko's avatar
      selftests/bpf: Add test for libbpf's custom log_buf behavior · 57e88926
      Andrii Nakryiko authored
      Add a selftest that validates that per-program and per-object log_buf
      overrides work as expected. Also test same logic for low-level
      bpf_prog_load() and bpf_btf_load() APIs.
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211209193840.1248570-11-andrii@kernel.org
      57e88926