[15:50:04][root@168.mr1370_220926_1234.el9.ppc64le]# './test_progs -t tailcalls' :: [ FAIL ] :: Command './test_progs -t tailcalls' (Expected 0, got 139, score 38) [15:50:05][root@168.mr1370_220926_1234.el9.ppc64le]# './test_progs -vv -t tailcalls' Successfully unloaded bpf_testmod.ko. Loading bpf_testmod.ko... Successfully loaded bpf_testmod.ko. libbpf: loading tailcall1.o libbpf: elf: section(2) tc, size 472, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_1' at insn offset 2 (16 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_2' at insn offset 4 (32 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 6 (48 bytes), code size 53 insns (424 bytes) libbpf: elf: section(3) .reltc, size 16, link 11, flags 40, type=9 libbpf: elf: section(4) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(5) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall1.o is GPL libbpf: elf: section(6) .BTF, size 2020, link 0, flags 0, type=1 libbpf: elf: section(8) .BTF.ext, size 360, link 0, flags 0, type=1 libbpf: elf: section(11) .symtab, size 336, link 12, flags 0, type=2 libbpf: looking for externs among 14 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 4, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 3. libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #7 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_1': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_2': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'entry': -- BEGIN PROG LOAD LOG -- processed 52 insns (limit 1000000) max_states_per_insn 0 total_states 6 peak_states 6 mark_read 1 -- END PROG LOAD LOG -- test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec test_tailcall_1:PASS:tailcall 128 nsec #154/1 tailcalls/tailcall_1:OK libbpf: loading tailcall2.o libbpf: elf: section(2) tc, size 440, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 9 insns (72 bytes) libbpf: sec 'tc': found program 'classifier_1' at insn offset 9 (72 bytes), code size 9 insns (72 bytes) libbpf: sec 'tc': found program 'classifier_2' at insn offset 18 (144 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_3' at insn offset 20 (160 bytes), code size 9 insns (72 bytes) libbpf: sec 'tc': found program 'classifier_4' at insn offset 29 (232 bytes), code size 9 insns (72 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 38 (304 bytes), code size 17 insns (136 bytes) libbpf: elf: section(3) .reltc, size 80, link 11, flags 40, type=9 libbpf: elf: section(4) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(5) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall2.o is GPL libbpf: elf: section(6) .BTF, size 2311, link 0, flags 0, type=1 libbpf: elf: section(8) .BTF.ext, size 392, link 0, flags 0, type=1 libbpf: elf: section(11) .symtab, size 384, link 12, flags 0, type=2 libbpf: looking for externs among 16 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 4, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 5. libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #1 against 'jmp_table' libbpf: prog 'classifier_0': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: sec '.reltc': relo #1: insn #10 against 'jmp_table' libbpf: prog 'classifier_1': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: sec '.reltc': relo #2: insn #21 against 'jmp_table' libbpf: prog 'classifier_3': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: sec '.reltc': relo #3: insn #30 against 'jmp_table' libbpf: prog 'classifier_4': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: sec '.reltc': relo #4: insn #39 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 4, off 0) for insn #1 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_1': -- BEGIN PROG LOAD LOG -- processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_2': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_3': -- BEGIN PROG LOAD LOG -- processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_4': -- BEGIN PROG LOAD LOG -- processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'entry': -- BEGIN PROG LOAD LOG -- processed 16 insns (limit 1000000) max_states_per_insn 0 total_states 1 peak_states 1 mark_read 1 -- END PROG LOAD LOG -- test_tailcall_2:PASS:tailcall 128 nsec test_tailcall_2:PASS:tailcall 128 nsec test_tailcall_2:PASS:tailcall 128 nsec #154/2 tailcalls/tailcall_2:OK libbpf: loading tailcall3.o libbpf: elf: section(2) tc, size 184, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 14 insns (112 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 14 (112 bytes), code size 9 insns (72 bytes) libbpf: elf: section(3) .reltc, size 48, link 12, flags 40, type=9 libbpf: elf: section(4) .bss, size 4, link 0, flags 3, type=8 libbpf: elf: section(5) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall3.o is GPL libbpf: elf: section(7) .BTF, size 2039, link 0, flags 0, type=1 libbpf: elf: section(9) .BTF.ext, size 184, link 0, flags 0, type=1 libbpf: elf: section(12) .symtab, size 336, link 13, flags 0, type=2 libbpf: looking for externs among 14 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 5, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 1. libbpf: map 'tailcall.bss' (global data): at sec_idx 4, offset 0, flags 400. libbpf: map 1 is "tailcall.bss" libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #1 against 'count' libbpf: prog 'classifier_0': found data map 1 (tailcall.bss, sec 4, off 0) for insn 1 libbpf: sec '.reltc': relo #1: insn #6 against 'jmp_table' libbpf: prog 'classifier_0': found map 0 (jmp_table, sec 5, off 0) for insn #6 libbpf: sec '.reltc': relo #2: insn #15 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 5, off 0) for insn #1 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: map 'tailcall.bss': created successfully, fd=6 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 12 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'entry': -- BEGIN PROG LOAD LOG -- processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- test_tailcall_count:PASS:tailcall 128 nsec test_tailcall_count:PASS:tailcall count 128 nsec test_tailcall_count:PASS:tailcall 128 nsec #154/3 tailcalls/tailcall_3:OK libbpf: loading tailcall4.o libbpf: elf: section(2) tc, size 112, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_1' at insn offset 2 (16 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_2' at insn offset 4 (32 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 6 (48 bytes), code size 8 insns (64 bytes) libbpf: elf: section(3) .reltc, size 32, link 12, flags 40, type=9 libbpf: elf: section(4) .bss, size 4, link 0, flags 3, type=8 libbpf: elf: section(5) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall4.o is GPL libbpf: elf: section(7) .BTF, size 1883, link 0, flags 0, type=1 libbpf: elf: section(9) .BTF.ext, size 184, link 0, flags 0, type=1 libbpf: elf: section(12) .symtab, size 384, link 13, flags 0, type=2 libbpf: looking for externs among 16 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 5, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 3. libbpf: map 'tailcall.bss' (global data): at sec_idx 4, offset 0, flags 400. libbpf: map 1 is "tailcall.bss" libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #6 against 'selector' libbpf: prog 'entry': found data map 1 (tailcall.bss, sec 4, off 0) for insn 0 libbpf: sec '.reltc': relo #1: insn #9 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 5, off 0) for insn #3 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: map 'tailcall.bss': created successfully, fd=6 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_1': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_2': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'entry': -- BEGIN PROG LOAD LOG -- processed 6 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- test_tailcall_4:PASS:tailcall 128 nsec test_tailcall_4:PASS:tailcall 128 nsec test_tailcall_4:PASS:tailcall 128 nsec test_tailcall_4:PASS:tailcall 128 nsec test_tailcall_4:PASS:tailcall 128 nsec test_tailcall_4:PASS:tailcall 128 nsec #154/4 tailcalls/tailcall_4:OK libbpf: loading tailcall5.o libbpf: elf: section(2) tc, size 168, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_1' at insn offset 2 (16 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'classifier_2' at insn offset 4 (32 bytes), code size 2 insns (16 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 6 (48 bytes), code size 15 insns (120 bytes) libbpf: elf: section(3) .reltc, size 32, link 12, flags 40, type=9 libbpf: elf: section(4) .bss, size 4, link 0, flags 3, type=8 libbpf: elf: section(5) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall5.o is GPL libbpf: elf: section(7) .BTF, size 1901, link 0, flags 0, type=1 libbpf: elf: section(9) .BTF.ext, size 200, link 0, flags 0, type=1 libbpf: elf: section(12) .symtab, size 432, link 13, flags 0, type=2 libbpf: looking for externs among 18 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 5, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 3. libbpf: map 'tailcall.bss' (global data): at sec_idx 4, offset 0, flags 400. libbpf: map 1 is "tailcall.bss" libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #6 against 'selector' libbpf: prog 'entry': found data map 1 (tailcall.bss, sec 4, off 0) for insn 0 libbpf: sec '.reltc': relo #1: insn #16 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 5, off 0) for insn #10 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: map 'tailcall.bss': created successfully, fd=6 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_1': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'classifier_2': -- BEGIN PROG LOAD LOG -- processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 -- END PROG LOAD LOG -- libbpf: prog 'entry': -- BEGIN PROG LOAD LOG -- processed 24 insns (limit 1000000) max_states_per_insn 1 total_states 2 peak_states 2 mark_read 1 -- END PROG LOAD LOG -- test_tailcall_5:PASS:tailcall 128 nsec test_tailcall_5:PASS:tailcall 128 nsec test_tailcall_5:PASS:tailcall 128 nsec test_tailcall_5:PASS:tailcall 128 nsec test_tailcall_5:PASS:tailcall 128 nsec test_tailcall_5:PASS:tailcall 128 nsec #154/5 tailcalls/tailcall_5:OK libbpf: loading tailcall6.o libbpf: elf: section(2) tc, size 168, link 0, flags 6, type=1 libbpf: sec 'tc': found program 'classifier_0' at insn offset 0 (0 bytes), code size 13 insns (104 bytes) libbpf: sec 'tc': found program 'entry' at insn offset 13 (104 bytes), code size 8 insns (64 bytes) libbpf: elf: section(3) .reltc, size 80, link 12, flags 40, type=9 libbpf: elf: section(4) .bss, size 8, link 0, flags 3, type=8 libbpf: elf: section(5) .maps, size 32, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of tailcall6.o is GPL libbpf: elf: section(7) .BTF, size 1873, link 0, flags 0, type=1 libbpf: elf: section(9) .BTF.ext, size 184, link 0, flags 0, type=1 libbpf: elf: section(12) .symtab, size 360, link 13, flags 0, type=2 libbpf: looking for externs among 15 symbols... libbpf: collected 0 externs total libbpf: map 'jmp_table': at sec_idx 5, offset 0. libbpf: map 'jmp_table': found type = 3. libbpf: map 'jmp_table': found key_size = 4. libbpf: map 'jmp_table': found value_size = 4. libbpf: map 'jmp_table': found max_entries = 1. libbpf: map 'tailcall.bss' (global data): at sec_idx 4, offset 0, flags 400. libbpf: map 1 is "tailcall.bss" libbpf: sec '.reltc': collecting relocation for section(2) 'tc' libbpf: sec '.reltc': relo #0: insn #0 against 'count' libbpf: prog 'classifier_0': found data map 1 (tailcall.bss, sec 4, off 0) for insn 0 libbpf: sec '.reltc': relo #1: insn #5 against 'which' libbpf: prog 'classifier_0': found data map 1 (tailcall.bss, sec 4, off 0) for insn 5 libbpf: sec '.reltc': relo #2: insn #8 against 'jmp_table' libbpf: prog 'classifier_0': found map 0 (jmp_table, sec 5, off 0) for insn #8 libbpf: sec '.reltc': relo #3: insn #13 against 'which' libbpf: prog 'entry': found data map 1 (tailcall.bss, sec 4, off 0) for insn 0 libbpf: sec '.reltc': relo #4: insn #16 against 'jmp_table' libbpf: prog 'entry': found map 0 (jmp_table, sec 5, off 0) for insn #3 libbpf: map 'jmp_table': created successfully, fd=5 libbpf: map 'tailcall.bss': created successfully, fd=6 libbpf: prog 'classifier_0': -- BEGIN PROG LOAD LOG -- processed 10 insns (limit 10000:: [ FAIL ] :: Command './test_progs -vv -t tailcalls' (Expected 0, got 139, score 38) [15:50:05][root@168.mr1370_220926_1234.el9.ppc64le]# './test_progs-no_alu32 -t tailcalls' :: [ FAIL ] :: Command './test_progs-no_alu32 -t tailcalls' (Expected 0, got 139, score 38) === Dmesg result === [ 5316.128069] test_progs[199683]: segfault (11) at 10000000190 nip 101dd0a4 lr 101dd090 code 1 in test_progs[10000000+570000] [ 5316.128098] test_progs[199683]: code: fbe1fff8 f821ffb1 7c3f0b78 f8410018 f87f0030 e87f0030 4bfe5475 7c691b78 [ 5316.128112] test_progs[199683]: code: 5529063e 2c090000 40820214 e93f0030 2c290000 4182002c e93f0030 [ 5316.515475] test_progs[199701]: segfault (11) at 10000000190 nip 101dd0a4 lr 101dd090 code 1 in test_progs[10000000+570000] [ 5316.515504] test_progs[199701]: code: fbe1fff8 f821ffb1 7c3f0b78 f8410018 f87f0030 e87f0030 4bfe5475 7c691b78 [ 5316.515517] test_progs[199701]: code: 5529063e 2c090000 40820214 e93f0030 2c290000 4182002c e93f0030 [ 5316.847277] test_progs-no_a[199717]: segfault (11) at 10000000190 nip 101dd0a8 lr 101dd094 code 1 in test_progs-no_alu32[10000000+580000] [ 5316.847309] test_progs-no_a[199717]: code: fbe1fff8 f821ffb1 7c3f0b78 f8410018 f87f0030 e87f0030 4bfe5475 7c691b78 [ 5316.847324] test_progs-no_a[199717]: code: 5529063e 2c090000 40820214 e93f0030 2c290000 4182002c e93f0030 :: [ FAIL ] :: Test '154..224 selftests: bpf_test_progs:tailcalls [FAIL]'