1. 29 Nov, 2023 12 commits
  2. 28 Nov, 2023 2 commits
  3. 27 Nov, 2023 1 commit
    • Yonghong Song's avatar
      bpf: Fix a few selftest failures due to llvm18 change · b16904fd
      Yonghong Song authored
      With latest upstream llvm18, the following test cases failed:
      
        $ ./test_progs -j
        #13/2    bpf_cookie/multi_kprobe_link_api:FAIL
        #13/3    bpf_cookie/multi_kprobe_attach_api:FAIL
        #13      bpf_cookie:FAIL
        #77      fentry_fexit:FAIL
        #78/1    fentry_test/fentry:FAIL
        #78      fentry_test:FAIL
        #82/1    fexit_test/fexit:FAIL
        #82      fexit_test:FAIL
        #112/1   kprobe_multi_test/skel_api:FAIL
        #112/2   kprobe_multi_test/link_api_addrs:FAIL
        [...]
        #112     kprobe_multi_test:FAIL
        #356/17  test_global_funcs/global_func17:FAIL
        #356     test_global_funcs:FAIL
      
      Further analysis shows llvm upstream patch [1] is responsible for the above
      failures. For example, for function bpf_fentry_test7() in net/bpf/test_run.c,
      without [1], the asm code is:
      
        0000000000000400 <bpf_fentry_test7>:
           400: f3 0f 1e fa                   endbr64
           404: e8 00 00 00 00                callq   0x409 <bpf_fentry_test7+0x9>
           409: 48 89 f8                      movq    %rdi, %rax
           40c: c3                            retq
           40d: 0f 1f 00                      nopl    (%rax)
      
      ... and with [1], the asm code is:
      
        0000000000005d20 <bpf_fentry_test7.specialized.1>:
          5d20: e8 00 00 00 00                callq   0x5d25 <bpf_fentry_test7.specialized.1+0x5>
          5d25: c3                            retq
      
      ... and <bpf_fentry_test7.specialized.1> is called instead of <bpf_fentry_test7>
      and this caused test failures for #13/#77 etc. except #356.
      
      For test case #356/17, with [1] (progs/test_global_func17.c)), the main prog
      looks like:
      
        0000000000000000 <global_func17>:
             0:       b4 00 00 00 2a 00 00 00 w0 = 0x2a
             1:       95 00 00 00 00 00 00 00 exit
      
      ... which passed verification while the test itself expects a verification
      failure.
      
      Let us add 'barrier_var' style asm code in both places to prevent function
      specialization which caused selftests failure.
      
        [1] https://github.com/llvm/llvm-project/pull/72903Signed-off-by: default avatarYonghong Song <yonghong.song@linux.dev>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Link: https://lore.kernel.org/bpf/20231127050342.1945270-1-yonghong.song@linux.dev
      b16904fd
  4. 24 Nov, 2023 3 commits
  5. 23 Nov, 2023 22 commits