Re: [RFC] bpf: verifier check for dead branch

2020-08-12 Thread Jiri Olsa
On Tue, Aug 11, 2020 at 09:08:13AM -0700, Yonghong Song wrote: > > > On 8/11/20 12:14 AM, Jiri Olsa wrote: > > On Mon, Aug 10, 2020 at 10:16:12AM -0700, Yonghong Song wrote: > > > > SNIP > > > > > > > > Thanks for the test case. I can reproduce the issue. The following > > > is why this happen

Re: [RFC] bpf: verifier check for dead branch

2020-08-11 Thread Yonghong Song
On 8/11/20 12:14 AM, Jiri Olsa wrote: On Mon, Aug 10, 2020 at 10:16:12AM -0700, Yonghong Song wrote: SNIP Thanks for the test case. I can reproduce the issue. The following is why this happens in llvm. the pseudo IR code looks like data = skb->data data_end = skb->data_end comp

Re: [RFC] bpf: verifier check for dead branch

2020-08-11 Thread Jiri Olsa
On Mon, Aug 10, 2020 at 10:16:12AM -0700, Yonghong Song wrote: SNIP > > Thanks for the test case. I can reproduce the issue. The following > is why this happens in llvm. > the pseudo IR code looks like >data = skb->data >data_end = skb->data_end >comp = data + 42 > data_end >ip =

Re: [RFC] bpf: verifier check for dead branch

2020-08-10 Thread Yonghong Song
On 8/10/20 6:54 AM, Jiri Olsa wrote: On Sun, Aug 09, 2020 at 06:21:01PM -0700, Yonghong Song wrote: On 8/7/20 10:30 AM, Jiri Olsa wrote: hi, we have a customer facing some odd verifier fails on following sk_skb program: 0. r2 = *(u32 *)(r1 + data_end) 1. r4 = *(u32 *)(r1 + data)

Re: [RFC] bpf: verifier check for dead branch

2020-08-10 Thread Jiri Olsa
On Sun, Aug 09, 2020 at 06:21:01PM -0700, Yonghong Song wrote: > > > On 8/7/20 10:30 AM, Jiri Olsa wrote: > > hi, > > we have a customer facing some odd verifier fails on following > > sk_skb program: > > > > 0. r2 = *(u32 *)(r1 + data_end) > > 1. r4 = *(u32 *)(r1 + data) > > 2. r3 =

Re: [RFC] bpf: verifier check for dead branch

2020-08-09 Thread Yonghong Song
On 8/7/20 10:30 AM, Jiri Olsa wrote: hi, we have a customer facing some odd verifier fails on following sk_skb program: 0. r2 = *(u32 *)(r1 + data_end) 1. r4 = *(u32 *)(r1 + data) 2. r3 = r4 3. r3 += 42 4. r1 = 0 5. if r3 > r2 goto 8 6. r4 += 14 7. r1 = r4

[RFC] bpf: verifier check for dead branch

2020-08-07 Thread Jiri Olsa
hi, we have a customer facing some odd verifier fails on following sk_skb program: 0. r2 = *(u32 *)(r1 + data_end) 1. r4 = *(u32 *)(r1 + data) 2. r3 = r4 3. r3 += 42 4. r1 = 0 5. if r3 > r2 goto 8 6. r4 += 14 7. r1 = r4 8. if r3 > r2 goto 10 9. r2 = *(u8 *)(r1 + 9)