All of lore.kernel.org
 help / color / mirror / Atom feed
* selftests/bpf: arm64: test_verifier 13 "FAIL retval 65507 != -29 (run 1/1)"
@ 2020-02-26 13:44 Paolo Pisati
  2020-02-26 14:59 ` Daniel Borkmann
  0 siblings, 1 reply; 2+ messages in thread
From: Paolo Pisati @ 2020-02-26 13:44 UTC (permalink / raw)
  To: bpf
  Cc: Daniel Borkmann, Alexei Starovoitov, Zi Shen Lim,
	Martin KaFai Lau, Song Liu, Yonghong Song, Andrii Nakryiko,
	netdev

This particular selftest fails on arm64 (x86-64 is fine):

$ sudo ./tools/testing/selftests/bpf/test_verifier -v 13
#13/p valid read map access into a read-only array 2 , verifier log:
0: (7a) *(u64 *)(r10 -8) = 0
1: (bf) r2 = r10
2: (07) r2 += -8
3: (18) r1 = 0xffff00becd0d8c00
5: (85) call bpf_map_lookup_elem#1
6: (15) if r0 == 0x0 goto pc+6
 R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R10=fp0 fp-8_w=mmmmmmmm
7: (bf) r1 = r0
8: (b7) r2 = 4
9: (b7) r3 = 0
10: (b7) r4 = 0
11: (b7) r5 = 0
12: (85) call bpf_csum_diff#28
 R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0)
R1_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R2_w=inv4 R3_w=inv0 R4_w=inv0
R5_w=inv0 R10=fp0 fp-8_w=mmmmmmmm
last_idx 12 first_idx 0
regs=4 stack=0 before 11: (b7) r5 = 0
regs=4 stack=0 before 10: (b7) r4 = 0
regs=4 stack=0 before 9: (b7) r3 = 0
regs=4 stack=0 before 8: (b7) r2 = 4
last_idx 12 first_idx 0
regs=10 stack=0 before 11: (b7) r5 = 0
regs=10 stack=0 before 10: (b7) r4 = 0
13: (95) exit

from 6 to 13: safe
processed 14 insns (limit 1000000) max_states_per_insn 0 total_states 1
peak_states 1 mark_read 1
FAIL retval 65507 != -29 (run 1/1) 
0: (7a) *(u64 *)(r10 -8) = 0
1: (bf) r2 = r10
2: (07) r2 += -8
3: (18) r1 = 0xffff00becd0d8c00
5: (85) call bpf_map_lookup_elem#1
6: (15) if r0 == 0x0 goto pc+6
 R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R10=fp0 fp-8_w=mmmmmmmm
7: (bf) r1 = r0
8: (b7) r2 = 4
9: (b7) r3 = 0
10: (b7) r4 = 0
11: (b7) r5 = 0
12: (85) call bpf_csum_diff#28
 R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0)
R1_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R2_w=inv4 R3_w=inv0 R4_w=inv0
R5_w=inv0 R10=fp0 fp-8_w=mmmmmmmm
last_idx 12 first_idx 0
regs=4 stack=0 before 11: (b7) r5 = 0
regs=4 stack=0 before 10: (b7) r4 = 0
regs=4 stack=0 before 9: (b7) r3 = 0
regs=4 stack=0 before 8: (b7) r2 = 4
last_idx 12 first_idx 0
regs=10 stack=0 before 11: (b7) r5 = 0
regs=10 stack=0 before 10: (b7) r4 = 0
13: (95) exit

from 6 to 13: safe
processed 14 insns (limit 1000000) max_states_per_insn 0 total_states 1
peak_states 1 mark_read 1
Summary: 0 PASSED, 0 SKIPPED, 1 FAILED

Above output without line wrapping: https://paste.ubuntu.com/p/qhCK8nJjKw/

Kernel version 5.4.21, config: https://paste.ubuntu.com/p/G3yxvvjRMS/

Anything i can do to help debug this?
-- 
bye,
p.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: selftests/bpf: arm64: test_verifier 13 "FAIL retval 65507 != -29 (run 1/1)"
  2020-02-26 13:44 selftests/bpf: arm64: test_verifier 13 "FAIL retval 65507 != -29 (run 1/1)" Paolo Pisati
@ 2020-02-26 14:59 ` Daniel Borkmann
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Borkmann @ 2020-02-26 14:59 UTC (permalink / raw)
  To: Paolo Pisati, bpf
  Cc: Alexei Starovoitov, Zi Shen Lim, Martin KaFai Lau, Song Liu,
	Yonghong Song, Andrii Nakryiko, netdev

On 2/26/20 2:44 PM, Paolo Pisati wrote:
> This particular selftest fails on arm64 (x86-64 is fine):
> 
> $ sudo ./tools/testing/selftests/bpf/test_verifier -v 13
> #13/p valid read map access into a read-only array 2 , verifier log:
> 0: (7a) *(u64 *)(r10 -8) = 0
> 1: (bf) r2 = r10
> 2: (07) r2 += -8
> 3: (18) r1 = 0xffff00becd0d8c00
> 5: (85) call bpf_map_lookup_elem#1
> 6: (15) if r0 == 0x0 goto pc+6
>   R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R10=fp0 fp-8_w=mmmmmmmm
> 7: (bf) r1 = r0
> 8: (b7) r2 = 4
> 9: (b7) r3 = 0
> 10: (b7) r4 = 0
> 11: (b7) r5 = 0
> 12: (85) call bpf_csum_diff#28
>   R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0)
> R1_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R2_w=inv4 R3_w=inv0 R4_w=inv0
> R5_w=inv0 R10=fp0 fp-8_w=mmmmmmmm
> last_idx 12 first_idx 0
> regs=4 stack=0 before 11: (b7) r5 = 0
> regs=4 stack=0 before 10: (b7) r4 = 0
> regs=4 stack=0 before 9: (b7) r3 = 0
> regs=4 stack=0 before 8: (b7) r2 = 4
> last_idx 12 first_idx 0
> regs=10 stack=0 before 11: (b7) r5 = 0
> regs=10 stack=0 before 10: (b7) r4 = 0
> 13: (95) exit
> 
> from 6 to 13: safe
> processed 14 insns (limit 1000000) max_states_per_insn 0 total_states 1
> peak_states 1 mark_read 1
> FAIL retval 65507 != -29 (run 1/1)
> 0: (7a) *(u64 *)(r10 -8) = 0
> 1: (bf) r2 = r10
> 2: (07) r2 += -8
> 3: (18) r1 = 0xffff00becd0d8c00
> 5: (85) call bpf_map_lookup_elem#1
> 6: (15) if r0 == 0x0 goto pc+6
>   R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R10=fp0 fp-8_w=mmmmmmmm
> 7: (bf) r1 = r0
> 8: (b7) r2 = 4
> 9: (b7) r3 = 0
> 10: (b7) r4 = 0
> 11: (b7) r5 = 0
> 12: (85) call bpf_csum_diff#28
>   R0_w=map_value(id=0,off=0,ks=4,vs=48,imm=0)
> R1_w=map_value(id=0,off=0,ks=4,vs=48,imm=0) R2_w=inv4 R3_w=inv0 R4_w=inv0
> R5_w=inv0 R10=fp0 fp-8_w=mmmmmmmm
> last_idx 12 first_idx 0
> regs=4 stack=0 before 11: (b7) r5 = 0
> regs=4 stack=0 before 10: (b7) r4 = 0
> regs=4 stack=0 before 9: (b7) r3 = 0
> regs=4 stack=0 before 8: (b7) r2 = 4
> last_idx 12 first_idx 0
> regs=10 stack=0 before 11: (b7) r5 = 0
> regs=10 stack=0 before 10: (b7) r4 = 0
> 13: (95) exit
> 
> from 6 to 13: safe
> processed 14 insns (limit 1000000) max_states_per_insn 0 total_states 1
> peak_states 1 mark_read 1
> Summary: 0 PASSED, 0 SKIPPED, 1 FAILED
> 
> Above output without line wrapping: https://paste.ubuntu.com/p/qhCK8nJjKw/
> 
> Kernel version 5.4.21, config: https://paste.ubuntu.com/p/G3yxvvjRMS/

Yep, the csum_diff is broken for non-x86_64. Fix is wip on my side, will keep
you posted.

Thanks,
Daniel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-02-26 14:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26 13:44 selftests/bpf: arm64: test_verifier 13 "FAIL retval 65507 != -29 (run 1/1)" Paolo Pisati
2020-02-26 14:59 ` Daniel Borkmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.