Skip to content

Instantly share code, notes, and snippets.

@s-newman
Created November 3, 2020 00:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s-newman/5147501cf186af20fa74f34b8b5256bc to your computer and use it in GitHub Desktop.
Save s-newman/5147501cf186af20fa74f34b8b5256bc to your computer and use it in GitHub Desktop.
Error message from the eBPF verifier for Ingraind DNS probe
0: (61) r3 = *(u32 *)(r1 +4)
1: (61) r2 = *(u32 *)(r1 +0)
2: (bf) r4 = r2
3: (07) r4 += 14
4: (2d) if r4 > r3 goto pc+72
R1=ctx(id=0,off=0,imm=0) R2_w=pkt(id=0,off=0,r=14,imm=0) R3_w=pkt_end(id=0,off=0,imm=0) R4_w=pkt(id=0,off=14,r=14,imm=0) R10=fp0
5: (bf) r5 = r2
6: (07) r5 += 34
7: (2d) if r5 > r3 goto pc+69
R1=ctx(id=0,off=0,imm=0) R2_w=pkt(id=0,off=0,r=34,imm=0) R3_w=pkt_end(id=0,off=0,imm=0) R4_w=pkt(id=0,off=14,r=34,imm=0) R5_w=pkt(id=0,off=34,r=34,imm=0) R10=fp0
8: (71) r5 = *(u8 *)(r2 +13)
9: (67) r5 <<= 8
10: (71) r0 = *(u8 *)(r2 +12)
11: (4f) r5 |= r0
12: (57) r5 &= 65535
13: (55) if r5 != 0x8 goto pc+63
R0=inv(id=0,umax_value=255,var_off=(0x0; 0xff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=0,off=14,r=34,imm=0) R5=inv8 R10=fp0
14: (61) r0 = *(u32 *)(r4 +16)
15: (61) r5 = *(u32 *)(r4 +12)
16: (71) r7 = *(u8 *)(r4 +0)
17: (67) r7 <<= 2
18: (57) r7 &= 60
19: (71) r6 = *(u8 *)(r4 +9)
20: (0f) r4 += r7
last_idx 20 first_idx 13
regs=80 stack=0 before 19: (71) r6 = *(u8 *)(r4 +9)
regs=80 stack=0 before 18: (57) r7 &= 60
regs=80 stack=0 before 17: (67) r7 <<= 2
regs=80 stack=0 before 16: (71) r7 = *(u8 *)(r4 +0)
21: (15) if r6 == 0x11 goto pc+46
R0_w=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4_w=pkt(id=1,off=14,r=0,umax_value=60,var_off=(0x0; 0x3c)) R5_w=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=inv(id=0,umax_value=255,var_off=(0x0; 0xff)) R7_w=invP(id=0,umax_value=60,var_off=(0x0; 0x3c)) R10=fp0
22: (55) if r6 != 0x6 goto pc+54
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=0,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=inv6 R7=invP(id=0,umax_value=60,var_off=(0x0; 0x3c)) R10=fp0
23: (2d) if r2 > r4 goto pc+53
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=0,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=inv6 R7=invP(id=0,umax_value=60,var_off=(0x0; 0x3c)) R10=fp0
24: (bf) r7 = r4
25: (07) r7 += 20
26: (2d) if r7 > r3 goto pc+50
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=inv6 R7_w=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R10=fp0
27: (71) r8 = *(u8 *)(r4 +12)
28: (bf) r6 = r8
29: (77) r6 >>= 2
30: (57) r6 &= 60
31: (07) r6 += 65516
32: (57) r6 &= 65532
33: (25) if r8 > 0x5f goto pc+1
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=inv(id=0,umax_value=65532,var_off=(0x0; 0xfffc)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
34: (b7) r6 = 0
35: (0f) r6 += r7
last_idx 35 first_idx 33
regs=40 stack=0 before 34: (b7) r6 = 0
36: (2d) if r2 > r6 goto pc+40
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
37: (3d) if r6 >= r3 goto pc+39
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
38: (2d) if r2 > r6 goto pc+38
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
39: (bf) r7 = r6
40: (07) r7 += 12
41: (2d) if r7 > r3 goto pc+35
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=46,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=1,off=34,r=46,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=46,r=46,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
42: (71) r7 = *(u8 *)(r6 +2)
43: (57) r7 &= 120
44: (55) if r7 != 0x0 goto pc+32
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=46,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=1,off=34,r=46,umax_value=60,var_off=(0x0; 0x3c)) R7_w=inv0 R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
45: (1f) r6 -= r2
46: (69) r7 = *(u16 *)(r4 +0)
47: (69) r4 = *(u16 *)(r4 +2)
48: (63) *(u32 *)(r10 -12) = r6
49: (dc) r4 = be16 r4
50: (6b) *(u16 *)(r10 -14) = r4
51: (dc) r7 = be16 r7
52: (6b) *(u16 *)(r10 -16) = r7
53: (63) *(u32 *)(r10 -20) = r0
54: (63) *(u32 *)(r10 -24) = r5
55: (1f) r3 -= r2
56: (63) *(u32 *)(r10 -8) = r3
57: (67) r3 <<= 32
58: (18) r2 = 0xffffffff
60: (4f) r3 |= r2
61: (bf) r4 = r10
62: (07) r4 += -24
63: (18) r2 = 0xffffba7f03009000
65: (b7) r5 = 20
66: (85) call bpf_perf_event_output#25
last_idx 66 first_idx 41
regs=20 stack=0 before 65: (b7) r5 = 20
67: (05) goto pc+9
77: (b7) r0 = 2
78: (95) exit
from 44 to 77: R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=46,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=1,off=34,r=46,umax_value=60,var_off=(0x0; 0x3c)) R7_w=inv(id=0,umax_value=120,var_off=(0x0; 0x78)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
77: (b7) r0 = 2
78: (95) exit
from 41 to 77: R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=46,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
77: (b7) r0 = 2
78: (95) exit
from 38 to 77: R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
77: (b7) r0 = 2
78: (95) exit
from 37 to 77: R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umax_value=95,var_off=(0x0; 0x7f)) R10=fp0
77: (b7) r0 = 2
78: (95) exit
from 36 to 77: safe
from 33 to 35: R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=inv(id=0,umax_value=65532,var_off=(0x0; 0xfffc)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umin_value=96,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
35: (0f) r6 += r7
last_idx 35 first_idx 33
regs=40 stack=0 before 33: (25) if r8 > 0x5f goto pc+1
R0_r=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1_r=ctx(id=0,off=0,imm=0) R2_r=pkt(id=0,off=0,r=34,imm=0) R3_r=pkt_end(id=0,off=0,imm=0) R4_r=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5_r=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_rw=invP(id=0,umax_value=65532,var_off=(0x0; 0xfffc)) R7_rw=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8_rw=inv(id=0,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
parent didn't have regs=40 stack=0 marks
last_idx 32 first_idx 22
regs=40 stack=0 before 32: (57) r6 &= 65532
regs=40 stack=0 before 31: (07) r6 += 65516
regs=40 stack=0 before 30: (57) r6 &= 60
regs=40 stack=0 before 29: (77) r6 >>= 2
regs=40 stack=0 before 28: (bf) r6 = r8
regs=100 stack=0 before 27: (71) r8 = *(u8 *)(r4 +12)
36: (2d) if r2 > r6 goto pc+40
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=2,off=34,r=0,umax_value=65592,var_off=(0x0; 0x1fffc)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umin_value=96,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
37: (3d) if r6 >= r3 goto pc+39
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=2,off=34,r=0,umax_value=65592,var_off=(0x0; 0x1fffc)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umin_value=96,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
38: (2d) if r2 > r6 goto pc+38
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6_w=pkt(id=2,off=34,r=0,umax_value=65592,var_off=(0x0; 0x1fffc)) R7=pkt(id=1,off=34,r=34,umax_value=60,var_off=(0x0; 0x3c)) R8=inv(id=0,umin_value=96,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
39: (bf) r7 = r6
40: (07) r7 += 12
41: (2d) if r7 > r3 goto pc+35
R0=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R1=ctx(id=0,off=0,imm=0) R2=pkt(id=0,off=0,r=34,imm=0) R3=pkt_end(id=0,off=0,imm=0) R4=pkt(id=1,off=14,r=34,umax_value=60,var_off=(0x0; 0x3c)) R5=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R6=pkt(id=2,off=34,r=0,umax_value=65592,var_off=(0x0; 0x1fffc)) R7=pkt(id=2,off=46,r=0,umax_value=65592,var_off=(0x0; 0x1fffc)) R8=inv(id=0,umin_value=96,umax_value=255,var_off=(0x0; 0xff)) R10=fp0
42: (71) r7 = *(u8 *)(r6 +2)
invalid access to packet, off=36 size=1, R6(id=2,off=34,r=0)
R6 offset is outside of the packet
processed 85 insns (limit 1000000) max_states_per_insn 1 total_states 7 peak_states 7 mark_read 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment