1. 29 9月, 2021 1 次提交
  2. 28 9月, 2021 1 次提交
  3. 22 9月, 2021 3 次提交
  4. 18 9月, 2021 4 次提交
  5. 15 9月, 2021 5 次提交
  6. 08 9月, 2021 1 次提交
  7. 17 8月, 2021 4 次提交
  8. 14 8月, 2021 1 次提交
    • H
      libbpf: Support weak typed ksyms. · 2211c825
      Hao Luo 提交于
      Currently weak typeless ksyms have default value zero, when they don't
      exist in the kernel. However, weak typed ksyms are rejected by libbpf
      if they can not be resolved. This means that if a bpf object contains
      the declaration of a nonexistent weak typed ksym, it will be rejected
      even if there is no program that references the symbol.
      
      Nonexistent weak typed ksyms can also default to zero just like
      typeless ones. This allows programs that access weak typed ksyms to be
      accepted by verifier, if the accesses are guarded. For example,
      
      extern const int bpf_link_fops3 __ksym __weak;
      
      /* then in BPF program */
      
      if (&bpf_link_fops3) {
         /* use bpf_link_fops3 */
      }
      
      If actual use of nonexistent typed ksym is not guarded properly,
      verifier would see that register is not PTR_TO_BTF_ID and wouldn't
      allow to use it for direct memory reads or passing it to BPF helpers.
      Signed-off-by: NHao Luo <haoluo@google.com>
      Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
      Link: https://lore.kernel.org/bpf/20210812003819.2439037-1-haoluo@google.com
      2211c825
  9. 31 7月, 2021 1 次提交
  10. 30 7月, 2021 3 次提交
  11. 28 7月, 2021 2 次提交
  12. 27 7月, 2021 4 次提交
  13. 24 7月, 2021 1 次提交
  14. 23 7月, 2021 3 次提交
  15. 20 7月, 2021 1 次提交
  16. 17 7月, 2021 2 次提交
  17. 16 7月, 2021 2 次提交
  18. 13 7月, 2021 1 次提交
    • M
      libbpf: Fix reuse of pinned map on older kernel · 97eb3138
      Martynas Pumputis 提交于
      When loading a BPF program with a pinned map, the loader checks whether
      the pinned map can be reused, i.e. their properties match. To derive
      such of the pinned map, the loader invokes BPF_OBJ_GET_INFO_BY_FD and
      then does the comparison.
      
      Unfortunately, on < 4.12 kernels the BPF_OBJ_GET_INFO_BY_FD is not
      available, so loading the program fails with the following error:
      
      	libbpf: failed to get map info for map FD 5: Invalid argument
      	libbpf: couldn't reuse pinned map at
      		'/sys/fs/bpf/tc/globals/cilium_call_policy': parameter
      		mismatch"
      	libbpf: map 'cilium_call_policy': error reusing pinned map
      	libbpf: map 'cilium_call_policy': failed to create:
      		Invalid argument(-22)
      	libbpf: failed to load object 'bpf_overlay.o'
      
      To fix this, fallback to derivation of the map properties via
      /proc/$PID/fdinfo/$MAP_FD if BPF_OBJ_GET_INFO_BY_FD fails with EINVAL,
      which can be used as an indicator that the kernel doesn't support
      the latter.
      Signed-off-by: NMartynas Pumputis <m@lambda.lt>
      Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Link: https://lore.kernel.org/bpf/20210712125552.58705-1-m@lambda.lt
      97eb3138