#0/u invalid and of negative number SKIP #0/p invalid and of negative number OK #1/u invalid range check SKIP #1/p invalid range check OK #2/u check known subreg with unknown reg SKIP #2/p check known subreg with unknown reg OK #3/u valid map access into an array with a constant SKIP #3/p valid map access into an array with a constant OK #4/u valid map access into an array with a register SKIP #4/p valid map access into an array with a register OK #5/u valid map access into an array with a variable SKIP #5/p valid map access into an array with a variable OK #6/u valid map access into an array with a signed variable SKIP #6/p valid map access into an array with a signed variable OK #7/u invalid map access into an array with a constant SKIP #7/p invalid map access into an array with a constant OK #8/u invalid map access into an array with a register SKIP #8/p invalid map access into an array with a register OK #9/u invalid map access into an array with a variable SKIP #9/p invalid map access into an array with a variable OK #10/u invalid map access into an array with no floor check SKIP #10/p invalid map access into an array with no floor check OK #11/u invalid map access into an array with a invalid max check SKIP #11/p invalid map access into an array with a invalid max check OK #12/u invalid map access into an array with a invalid max check SKIP #12/p invalid map access into an array with a invalid max check OK #13/u valid read map access into a read-only array 1 SKIP #13/p valid read map access into a read-only array 1 OK #14/p valid read map access into a read-only array 2 OK #15/u invalid write map access into a read-only array 1 SKIP #15/p invalid write map access into a read-only array 1 OK #16/p invalid write map access into a read-only array 2 OK #17/u valid write map access into a write-only array 1 SKIP #17/p valid write map access into a write-only array 1 OK #18/p valid write map access into a write-only array 2 OK #19/u invalid read map access into a write-only array 1 SKIP #19/p invalid read map access into a write-only array 1 OK #20/p invalid read map access into a write-only array 2 OK #21/u BPF_ATOMIC_AND without fetch SKIP #21/p BPF_ATOMIC_AND without fetch OK #22/u BPF_ATOMIC_AND with fetch SKIP #22/p BPF_ATOMIC_AND with fetch OK #23/u BPF_ATOMIC_AND with fetch 32bit SKIP #23/p BPF_ATOMIC_AND with fetch 32bit OK #24/u BPF_ATOMIC_AND with fetch - r0 as source reg SKIP #24/p BPF_ATOMIC_AND with fetch - r0 as source reg OK #25/u BPF_ATOMIC bounds propagation, mem->reg SKIP #25/p BPF_ATOMIC bounds propagation, mem->reg OK #26/u atomic compare-and-exchange smoketest - 64bit SKIP #26/p atomic compare-and-exchange smoketest - 64bit OK #27/u atomic compare-and-exchange smoketest - 32bit SKIP #27/p atomic compare-and-exchange smoketest - 32bit OK #28/u Can't use cmpxchg on uninit src reg SKIP #28/p Can't use cmpxchg on uninit src reg OK #29/u Can't use cmpxchg on uninit memory SKIP #29/p Can't use cmpxchg on uninit memory OK #30/u BPF_W cmpxchg should zero top 32 bits SKIP #30/p BPF_W cmpxchg should zero top 32 bits OK #31/u Dest pointer in r0 - fail SKIP #31/p Dest pointer in r0 - fail OK #32/u Dest pointer in r0 - succeed SKIP #32/p Dest pointer in r0 - succeed OK #33/u Dest pointer in r0 - succeed, check 2 SKIP #33/p Dest pointer in r0 - succeed, check 2 OK #34/u Dest pointer in r0 - succeed, check 3 SKIP #34/p Dest pointer in r0 - succeed, check 3 OK #35/u Dest pointer in r0 - succeed, check 4 SKIP #35/p Dest pointer in r0 - succeed, check 4 OK #36/u Dest pointer in r0 - succeed, check 5 SKIP #36/p Dest pointer in r0 - succeed, check 5 OK #37/u BPF_ATOMIC_FETCH_ADD smoketest - 64bit SKIP #37/p BPF_ATOMIC_FETCH_ADD smoketest - 64bit OK #38/u BPF_ATOMIC_FETCH_ADD smoketest - 32bit SKIP #38/p BPF_ATOMIC_FETCH_ADD smoketest - 32bit OK #39/u Can't use ATM_FETCH_ADD on frame pointer SKIP #39/p Can't use ATM_FETCH_ADD on frame pointer OK #40/u Can't use ATM_FETCH_ADD on uninit src reg SKIP #40/p Can't use ATM_FETCH_ADD on uninit src reg OK #41/u Can't use ATM_FETCH_ADD on uninit dst reg SKIP #41/p Can't use ATM_FETCH_ADD on uninit dst reg OK #42/p Can't use ATM_FETCH_ADD on kernel memory OK #43/u atomic dw/fetch and address leakage of (map ptr & -1) via stack slot SKIP #43/p atomic dw/fetch and address leakage of (map ptr & -1) via stack slot OK #44/u atomic dw/fetch and address leakage of (map ptr & -1) via returned value SKIP #44/p atomic dw/fetch and address leakage of (map ptr & -1) via returned value OK #45/u atomic w/fetch and address leakage of (map ptr & -1) via stack slot SKIP #45/p atomic w/fetch and address leakage of (map ptr & -1) via stack slot OK #46/u atomic w/fetch and address leakage of (map ptr & -1) via returned value SKIP #46/p atomic w/fetch and address leakage of (map ptr & -1) via returned value OK #47/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 SKIP #47/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 OK #48/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 SKIP #48/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 OK #49/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 SKIP #49/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 OK #50/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 SKIP #50/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 OK #51/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 SKIP #51/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 OK #52/u atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 SKIP #52/p atomic fetch BPF_ADD | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 OK #53/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 SKIP #53/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 OK #54/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 SKIP #54/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 OK #55/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 SKIP #55/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 OK #56/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 SKIP #56/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 OK #57/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 SKIP #57/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 OK #58/u atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 SKIP #58/p atomic fetch BPF_AND | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 OK #59/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 SKIP #59/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 OK #60/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 SKIP #60/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 OK #61/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 SKIP #61/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 OK #62/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 SKIP #62/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 OK #63/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 SKIP #63/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 OK #64/u atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 SKIP #64/p atomic fetch BPF_OR | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 OK #65/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 SKIP #65/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_2 dst=BPF_REG_2 OK #66/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 SKIP #66/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_1 dst=BPF_REG_1 OK #67/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 SKIP #67/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_0 dst=BPF_REG_0 OK #68/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 SKIP #68/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_3 dst=BPF_REG_3 OK #69/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 SKIP #69/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_5 dst=BPF_REG_5 OK #70/u atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 SKIP #70/p atomic fetch BPF_XOR | BPF_FETCH, src=BPF_REG_8 dst=BPF_REG_8 OK #71/u atomic fetch BPF_XCHG, src=BPF_REG_2 dst=BPF_REG_2 SKIP #71/p atomic fetch BPF_XCHG, src=BPF_REG_2 dst=BPF_REG_2 OK #72/u atomic fetch BPF_XCHG, src=BPF_REG_1 dst=BPF_REG_1 SKIP #72/p atomic fetch BPF_XCHG, src=BPF_REG_1 dst=BPF_REG_1 OK #73/u atomic fetch BPF_XCHG, src=BPF_REG_0 dst=BPF_REG_0 SKIP #73/p atomic fetch BPF_XCHG, src=BPF_REG_0 dst=BPF_REG_0 OK #74/u atomic fetch BPF_XCHG, src=BPF_REG_3 dst=BPF_REG_3 SKIP #74/p atomic fetch BPF_XCHG, src=BPF_REG_3 dst=BPF_REG_3 OK #75/u atomic fetch BPF_XCHG, src=BPF_REG_5 dst=BPF_REG_5 SKIP #75/p atomic fetch BPF_XCHG, src=BPF_REG_5 dst=BPF_REG_5 OK #76/u atomic fetch BPF_XCHG, src=BPF_REG_8 dst=BPF_REG_8 SKIP #76/p atomic fetch BPF_XCHG, src=BPF_REG_8 dst=BPF_REG_8 OK #77/u atomic BPF_ADD access through non-pointer SKIP #77/p atomic BPF_ADD access through non-pointer OK #78/u atomic BPF_ADD | BPF_FETCH access through non-pointer SKIP #78/p atomic BPF_ADD | BPF_FETCH access through non-pointer OK #79/u atomic BPF_ADD access through non-pointer SKIP #79/p atomic BPF_ADD access through non-pointer OK #80/u atomic BPF_ADD | BPF_FETCH access through non-pointer SKIP #80/p atomic BPF_ADD | BPF_FETCH access through non-pointer OK #81/u atomic BPF_AND access through non-pointer SKIP #81/p atomic BPF_AND access through non-pointer OK #82/u atomic BPF_AND | BPF_FETCH access through non-pointer SKIP #82/p atomic BPF_AND | BPF_FETCH access through non-pointer OK #83/u atomic BPF_OR access through non-pointer SKIP #83/p atomic BPF_OR access through non-pointer OK #84/u atomic BPF_OR | BPF_FETCH access through non-pointer SKIP #84/p atomic BPF_OR | BPF_FETCH access through non-pointer OK #85/u atomic BPF_XOR access through non-pointer SKIP #85/p atomic BPF_XOR access through non-pointer OK #86/u atomic BPF_XOR | BPF_FETCH access through non-pointer SKIP #86/p atomic BPF_XOR | BPF_FETCH access through non-pointer OK #87/u atomic BPF_XCHG access through non-pointer SKIP #87/p atomic BPF_XCHG access through non-pointer OK #88/u atomic BPF_CMPXCHG access through non-pointer SKIP #88/p atomic BPF_CMPXCHG access through non-pointer OK #89/u BPF_ATOMIC OR without fetch SKIP #89/p BPF_ATOMIC OR without fetch OK #90/u BPF_ATOMIC OR with fetch SKIP #90/p BPF_ATOMIC OR with fetch OK #91/u BPF_ATOMIC OR with fetch 32bit SKIP #91/p BPF_ATOMIC OR with fetch 32bit OK #92/u BPF_W atomic_fetch_or should zero top 32 bits SKIP #92/p BPF_W atomic_fetch_or should zero top 32 bits OK #93/u atomic exchange smoketest - 64bit SKIP #93/p atomic exchange smoketest - 64bit OK #94/u atomic exchange smoketest - 32bit SKIP #94/p atomic exchange smoketest - 32bit OK #95/u BPF_ATOMIC XOR without fetch SKIP #95/p BPF_ATOMIC XOR without fetch OK #96/u BPF_ATOMIC XOR with fetch SKIP #96/p BPF_ATOMIC XOR with fetch OK #97/u BPF_ATOMIC XOR with fetch 32bit SKIP #97/p BPF_ATOMIC XOR with fetch 32bit OK #98/u empty prog SKIP #98/p empty prog OK #99/u only exit insn SKIP #99/p only exit insn OK #100/u no bpf_exit SKIP #100/p no bpf_exit OK #101/u invalid call insn1 SKIP #101/p invalid call insn1 OK #102/u invalid call insn2 SKIP #102/p invalid call insn2 OK #103/u invalid function call SKIP #103/p invalid function call OK #104/p invalid argument register OK #105/p non-invalid argument register OK #106/u add+sub+mul SKIP #106/p add+sub+mul OK #107/p xor32 zero extend check OK #108/u arsh32 on imm SKIP #108/p arsh32 on imm OK #109/u arsh32 on imm 2 SKIP #109/p arsh32 on imm 2 OK #110/u arsh32 on reg SKIP #110/p arsh32 on reg OK #111/u arsh32 on reg 2 SKIP #111/p arsh32 on reg 2 OK #112/u arsh64 on imm SKIP #112/p arsh64 on imm OK #113/u arsh64 on reg SKIP #113/p arsh64 on reg OK #114/u lsh64 by 0 imm SKIP #114/p lsh64 by 0 imm OK #115/u rsh64 by 0 imm SKIP #115/p rsh64 by 0 imm OK #116/u arsh64 by 0 imm SKIP #116/p arsh64 by 0 imm OK #117/u lsh64 by 0 reg SKIP #117/p lsh64 by 0 reg OK #118/u rsh64 by 0 reg SKIP #118/p rsh64 by 0 reg OK #119/u arsh64 by 0 reg SKIP #119/p arsh64 by 0 reg OK #120/u invalid 64-bit BPF_END SKIP #120/p invalid 64-bit BPF_END OK #121/p mov64 src == dst OK #122/p mov64 src != dst OK #123/u stack out of bounds SKIP #123/p stack out of bounds OK #124/u uninitialized stack1 SKIP #124/p uninitialized stack1 OK #125/u uninitialized stack2 SKIP #125/p uninitialized stack2 OK #126/u invalid fp arithmetic SKIP #126/p invalid fp arithmetic OK #127/u non-invalid fp arithmetic SKIP #127/p non-invalid fp arithmetic OK #128/u misaligned read from stack SKIP #128/p misaligned read from stack OK #129/u invalid src register in STX SKIP #129/p invalid src register in STX OK #130/u invalid dst register in STX SKIP #130/p invalid dst register in STX OK #131/u invalid dst register in ST SKIP #131/p invalid dst register in ST OK #132/u invalid src register in LDX SKIP #132/p invalid src register in LDX OK #133/u invalid dst register in LDX SKIP #133/p invalid dst register in LDX OK #134/u subtraction bounds (map value) variant 1 SKIP #134/p subtraction bounds (map value) variant 1 OK #135/u subtraction bounds (map value) variant 2 SKIP #135/p subtraction bounds (map value) variant 2 OK #136/u check subtraction on pointers for unpriv SKIP #136/p check subtraction on pointers for unpriv OK #137/u bounds check based on zero-extended MOV SKIP #137/p bounds check based on zero-extended MOV OK #138/u bounds check based on sign-extended MOV. test1 SKIP #138/p bounds check based on sign-extended MOV. test1 OK #139/u bounds check based on sign-extended MOV. test2 SKIP #139/p bounds check based on sign-extended MOV. test2 OK #140/p bounds check based on reg_off + var_off + insn_off. test1 OK #141/p bounds check based on reg_off + var_off + insn_off. test2 OK #142/u bounds check after truncation of non-boundary-crossing range SKIP #142/p bounds check after truncation of non-boundary-crossing range OK #143/u bounds check after truncation of boundary-crossing range (1) SKIP #143/p bounds check after truncation of boundary-crossing range (1) OK #144/u bounds check after truncation of boundary-crossing range (2) SKIP #144/p bounds check after truncation of boundary-crossing range (2) OK #145/u bounds check after wrapping 32-bit addition SKIP #145/p bounds check after wrapping 32-bit addition OK #146/u bounds check after shift with oversized count operand SKIP #146/p bounds check after shift with oversized count operand OK #147/u bounds check after right shift of maybe-negative number SKIP #147/p bounds check after right shift of maybe-negative number OK #148/u bounds check after 32-bit right shift with 64-bit input SKIP #148/p bounds check after 32-bit right shift with 64-bit input OK #149/u bounds check map access with off+size signed 32bit overflow. test1 SKIP #149/p bounds check map access with off+size signed 32bit overflow. test1 OK #150/u bounds check map access with off+size signed 32bit overflow. test2 SKIP #150/p bounds check map access with off+size signed 32bit overflow. test2 OK #151/u bounds check map access with off+size signed 32bit overflow. test3 SKIP #151/p bounds check map access with off+size signed 32bit overflow. test3 OK #152/u bounds check map access with off+size signed 32bit overflow. test4 SKIP #152/p bounds check map access with off+size signed 32bit overflow. test4 OK #153/u bounds check mixed 32bit and 64bit arithmetic. test1 SKIP #153/p bounds check mixed 32bit and 64bit arithmetic. test1 OK #154/u bounds check mixed 32bit and 64bit arithmetic. test2 SKIP #154/p bounds check mixed 32bit and 64bit arithmetic. test2 OK #155/p assigning 32bit bounds to 64bit for wA = 0, wB = wA OK #156/u bounds check for reg = 0, reg xor 1 SKIP #156/p bounds check for reg = 0, reg xor 1 OK #157/u bounds check for reg32 = 0, reg32 xor 1 SKIP #157/p bounds check for reg32 = 0, reg32 xor 1 OK #158/u bounds check for reg = 2, reg xor 3 SKIP #158/p bounds check for reg = 2, reg xor 3 OK #159/u bounds check for reg = any, reg xor 3 SKIP #159/p bounds check for reg = any, reg xor 3 OK #160/u bounds check for reg32 = any, reg32 xor 3 SKIP #160/p bounds check for reg32 = any, reg32 xor 3 OK #161/u bounds check for reg > 0, reg xor 3 SKIP #161/p bounds check for reg > 0, reg xor 3 OK #162/u bounds check for reg32 > 0, reg32 xor 3 SKIP #162/p bounds check for reg32 > 0, reg32 xor 3 OK #163/u bounds checks after 32-bit truncation. test 1 SKIP #163/p bounds checks after 32-bit truncation. test 1 OK #164/u bounds checks after 32-bit truncation. test 2 SKIP #164/p bounds checks after 32-bit truncation. test 2 OK #165/u check deducing bounds from const, 1 SKIP #165/p check deducing bounds from const, 1 OK #166/u check deducing bounds from const, 2 SKIP #166/p check deducing bounds from const, 2 OK #167/u check deducing bounds from const, 3 SKIP #167/p check deducing bounds from const, 3 OK #168/u check deducing bounds from const, 4 SKIP #168/p check deducing bounds from const, 4 OK #169/u check deducing bounds from const, 5 SKIP #169/p check deducing bounds from const, 5 OK #170/u check deducing bounds from const, 6 SKIP #170/p check deducing bounds from const, 6 OK #171/u check deducing bounds from const, 7 SKIP #171/p check deducing bounds from const, 7 OK #172/u check deducing bounds from const, 8 SKIP #172/p check deducing bounds from const, 8 OK #173/u check deducing bounds from const, 9 SKIP #173/p check deducing bounds from const, 9 OK #174/u check deducing bounds from const, 10 SKIP #174/p check deducing bounds from const, 10 OK #175/u bounds checks mixing signed and unsigned, positive bounds SKIP #175/p bounds checks mixing signed and unsigned, positive bounds OK #176/u bounds checks mixing signed and unsigned SKIP #176/p bounds checks mixing signed and unsigned OK #177/u bounds checks mixing signed and unsigned, variant 2 SKIP #177/p bounds checks mixing signed and unsigned, variant 2 OK #178/u bounds checks mixing signed and unsigned, variant 3 SKIP #178/p bounds checks mixing signed and unsigned, variant 3 OK #179/u bounds checks mixing signed and unsigned, variant 4 SKIP #179/p bounds checks mixing signed and unsigned, variant 4 OK #180/u bounds checks mixing signed and unsigned, variant 5 SKIP #180/p bounds checks mixing signed and unsigned, variant 5 OK #181/u bounds checks mixing signed and unsigned, variant 6 SKIP #181/p bounds checks mixing signed and unsigned, variant 6 OK #182/u bounds checks mixing signed and unsigned, variant 7 SKIP #182/p bounds checks mixing signed and unsigned, variant 7 OK #183/u bounds checks mixing signed and unsigned, variant 8 SKIP #183/p bounds checks mixing signed and unsigned, variant 8 OK #184/u bounds checks mixing signed and unsigned, variant 9 SKIP #184/p bounds checks mixing signed and unsigned, variant 9 OK #185/u bounds checks mixing signed and unsigned, variant 10 SKIP #185/p bounds checks mixing signed and unsigned, variant 10 OK #186/u bounds checks mixing signed and unsigned, variant 11 SKIP #186/p bounds checks mixing signed and unsigned, variant 11 OK #187/u bounds checks mixing signed and unsigned, variant 12 SKIP #187/p bounds checks mixing signed and unsigned, variant 12 OK #188/u bounds checks mixing signed and unsigned, variant 13 SKIP #188/p bounds checks mixing signed and unsigned, variant 13 OK #189/u bounds checks mixing signed and unsigned, variant 14 SKIP #189/p bounds checks mixing signed and unsigned, variant 14 OK #190/u bounds checks mixing signed and unsigned, variant 15 SKIP #190/p bounds checks mixing signed and unsigned, variant 15 OK #191/p bpf_get_stack return R0 within range Did not run the program (not supported) OK #192/p bpf_get_task_stack return R0 range is refined OK #193/p inline simple bpf_loop call Did not run the program (not supported) OK #194/p don't inline bpf_loop call, flags non-zero Did not run the program (not supported) OK #195/p don't inline bpf_loop call, callback non-constant Did not run the program (not supported) OK #196/p bpf_loop_inline and a dead func Did not run the program (not supported) OK #197/p bpf_loop_inline stack locations for loop vars Did not run the program (not supported) OK #198/p inline bpf_loop call in a big program Did not run the program (not supported) OK #199/p btf_ctx_access accept OK #200/p calls: invalid kfunc call not eliminated OK #201/p calls: invalid kfunc call unreachable Did not run the program (not supported) OK #202/p calls: invalid kfunc call: ptr_to_mem to struct with non-scalar OK #203/p calls: invalid kfunc call: ptr_to_mem to struct with nesting depth > 4 OK #204/p calls: invalid kfunc call: ptr_to_mem to struct with FAM OK #205/p calls: invalid kfunc call: reg->type != PTR_TO_CTX OK #206/p calls: invalid kfunc call: void * not allowed in func proto without mem size arg OK #207/p calls: trigger reg2btf_ids[reg->type] for reg->type > __BPF_REG_TYPE_MAX OK #208/p calls: invalid kfunc call: reg->off must be zero when passed to release kfunc OK #209/p calls: invalid kfunc call: don't match first member type when passed to release kfunc OK #210/p calls: invalid kfunc call: PTR_TO_BTF_ID with negative offset OK #211/p calls: invalid kfunc call: PTR_TO_BTF_ID with variable offset OK #212/p calls: invalid kfunc call: referenced arg needs refcounted PTR_TO_BTF_ID OK #213/p calls: valid kfunc call: referenced arg needs refcounted PTR_TO_BTF_ID OK #214/p calls: basic sanity Did not run the program (not supported) OK #215/u calls: not on unpriviledged SKIP #215/p calls: not on unpriviledged OK #216/p calls: div by 0 in subprog OK #217/p calls: multiple ret types in subprog 1 OK #218/p calls: multiple ret types in subprog 2 OK #219/p calls: overlapping caller/callee OK #220/p calls: wrong recursive calls OK #221/p calls: wrong src reg OK #222/p calls: wrong off value OK #223/p calls: jump back loop OK #224/p calls: conditional call OK #225/p calls: conditional call 2 Did not run the program (not supported) OK #226/u calls: conditional call 3 SKIP #226/p calls: conditional call 3 OK #227/p calls: conditional call 4 Did not run the program (not supported) OK #228/p calls: conditional call 5 OK #229/p calls: conditional call 6 OK #230/p calls: using r0 returned by callee Did not run the program (not supported) OK #231/p calls: using uninit r0 from callee OK #232/p calls: callee is using r1 OK #233/u calls: callee using args1 SKIP #233/p calls: callee using args1 OK #234/p calls: callee using wrong args2 OK #235/u calls: callee using two args SKIP #235/p calls: callee using two args OK #236/p calls: callee changing pkt pointers OK #237/u calls: ptr null check in subprog SKIP #237/p calls: ptr null check in subprog OK #238/p calls: two calls with args OK #239/p calls: calls with stack arith OK #240/p calls: calls with misaligned stack access OK #241/p calls: calls control flow, jump test OK #242/p calls: calls control flow, jump test 2 OK #243/p calls: two calls with bad jump OK #244/p calls: recursive call. test1 OK #245/p calls: recursive call. test2 OK #246/p calls: unreachable code OK #247/p calls: invalid call OK #248/p calls: invalid call 2 OK #249/p calls: jumping across function bodies. test1 OK #250/p calls: jumping across function bodies. test2 OK #251/p calls: call without exit OK #252/p calls: call into middle of ld_imm64 OK #253/p calls: call into middle of other call OK #254/p calls: subprog call with ld_abs in main prog OK #255/p calls: two calls with bad fallthrough OK #256/p calls: two calls with stack read OK #257/p calls: two calls with stack write OK #258/p calls: stack overflow using two frames (pre-call access) OK #259/p calls: stack overflow using two frames (post-call access) OK #260/p calls: stack depth check using three frames. test1 OK #261/p calls: stack depth check using three frames. test2 OK #262/p calls: stack depth check using three frames. test3 OK #263/p calls: stack depth check using three frames. test4 OK #264/p calls: stack depth check using three frames. test5 OK #265/p calls: stack depth check in dead code OK #266/p calls: spill into caller stack frame OK #267/p calls: write into caller stack frame OK #268/p calls: write into callee stack frame OK #269/p calls: two calls with stack write and void return OK #270/u calls: ambiguous return value SKIP #270/p calls: ambiguous return value OK #271/p calls: two calls that return map_value OK #272/p calls: two calls that return map_value with bool condition OK #273/p calls: two calls that return map_value with incorrect bool check OK #274/p calls: two calls that receive map_value via arg=ptr_stack_of_caller. test1 OK #275/p calls: two calls that receive map_value via arg=ptr_stack_of_caller. test2 OK #276/p calls: two jumps that receive map_value via arg=ptr_stack_of_jumper. test3 OK #277/p calls: two calls that receive map_value_ptr_or_null via arg. test1 OK #278/p calls: two calls that receive map_value_ptr_or_null via arg. test2 OK #279/p calls: pkt_ptr spill into caller stack OK #280/p calls: pkt_ptr spill into caller stack 2 OK #281/p calls: pkt_ptr spill into caller stack 3 OK #282/p calls: pkt_ptr spill into caller stack 4 OK #283/p calls: pkt_ptr spill into caller stack 5 OK #284/p calls: pkt_ptr spill into caller stack 6 OK #285/p calls: pkt_ptr spill into caller stack 7 OK #286/p calls: pkt_ptr spill into caller stack 8 OK #287/p calls: pkt_ptr spill into caller stack 9 OK #288/p calls: caller stack init to zero or map_value_or_null OK #289/p calls: stack init to zero and pruning OK #290/u calls: ctx read at start of subprog SKIP #290/p calls: ctx read at start of subprog OK #291/u calls: cross frame pruning SKIP #291/p calls: cross frame pruning OK #292/u calls: cross frame pruning - liveness propagation SKIP #292/p calls: cross frame pruning - liveness propagation OK #293/u unreachable SKIP #293/p unreachable OK #294/u unreachable2 SKIP #294/p unreachable2 OK #295/u out of range jump SKIP #295/p out of range jump OK #296/u out of range jump2 SKIP #296/p out of range jump2 OK #297/u loop (back-edge) SKIP #297/p loop (back-edge) OK #298/u loop2 (back-edge) SKIP #298/p loop2 (back-edge) OK #299/u conditional loop SKIP #299/p conditional loop OK #300/p bpf_exit with invalid return code. test1 OK #301/p bpf_exit with invalid return code. test2 Did not run the program (not supported) OK #302/p bpf_exit with invalid return code. test3 OK #303/p bpf_exit with invalid return code. test4 Did not run the program (not supported) OK #304/p bpf_exit with invalid return code. test5 OK #305/p bpf_exit with invalid return code. test6 OK #306/p bpf_exit with invalid return code. test7 OK #307/u direct packet read test#1 for CGROUP_SKB SKIP #307/p direct packet read test#1 for CGROUP_SKB OK #308/u direct packet read test#2 for CGROUP_SKB SKIP #308/p direct packet read test#2 for CGROUP_SKB OK #309/u direct packet read test#3 for CGROUP_SKB SKIP #309/p direct packet read test#3 for CGROUP_SKB OK #310/u direct packet read test#4 for CGROUP_SKB SKIP #310/p direct packet read test#4 for CGROUP_SKB OK #311/u invalid access of tc_classid for CGROUP_SKB SKIP #311/p invalid access of tc_classid for CGROUP_SKB OK #312/u invalid access of data_meta for CGROUP_SKB SKIP #312/p invalid access of data_meta for CGROUP_SKB OK #313/u invalid access of flow_keys for CGROUP_SKB SKIP #313/p invalid access of flow_keys for CGROUP_SKB OK #314/u invalid write access to napi_id for CGROUP_SKB SKIP #314/p invalid write access to napi_id for CGROUP_SKB OK #315/u write tstamp from CGROUP_SKB SKIP #315/p write tstamp from CGROUP_SKB OK #316/u read tstamp from CGROUP_SKB SKIP #316/p read tstamp from CGROUP_SKB OK #317/u valid cgroup storage access SKIP #317/p valid cgroup storage access OK #318/u invalid cgroup storage access 1 SKIP #318/p invalid cgroup storage access 1 OK #319/u invalid cgroup storage access 2 SKIP #319/p invalid cgroup storage access 2 OK #320/u invalid cgroup storage access 3 SKIP #320/p invalid cgroup storage access 3 OK #321/u invalid cgroup storage access 4 SKIP #321/p invalid cgroup storage access 4 OK #322/u invalid cgroup storage access 5 SKIP #322/p invalid cgroup storage access 5 OK #323/u invalid cgroup storage access 6 SKIP #323/p invalid cgroup storage access 6 OK #324/u valid per-cpu cgroup storage access SKIP #324/p valid per-cpu cgroup storage access OK #325/u invalid per-cpu cgroup storage access 1 SKIP #325/p invalid per-cpu cgroup storage access 1 OK #326/u invalid per-cpu cgroup storage access 2 SKIP #326/p invalid per-cpu cgroup storage access 2 OK #327/u invalid per-cpu cgroup storage access 3 SKIP #327/p invalid per-cpu cgroup storage access 3 OK #328/u invalid per-cpu cgroup storage access 4 SKIP #328/p invalid per-cpu cgroup storage access 4 OK #329/u invalid per-cpu cgroup storage access 5 SKIP #329/p invalid per-cpu cgroup storage access 5 OK #330/u invalid per-cpu cgroup storage access 6 SKIP #330/p invalid per-cpu cgroup storage access 6 OK #331/p constant register |= constant should keep constant type Did not run the program (not supported) OK #332/p constant register |= constant should not bypass stack boundary checks OK #333/p constant register |= constant register should keep constant type Did not run the program (not supported) OK #334/p constant register |= constant register should not bypass stack boundary checks OK #335/p context stores via ST OK #336/p context stores via BPF_ATOMIC OK #337/p arithmetic ops make PTR_TO_CTX unusable OK #338/p pass unmodified ctx pointer to helper OK #339/p pass modified ctx pointer to helper, 1 OK #340/u pass modified ctx pointer to helper, 2 SKIP #340/p pass modified ctx pointer to helper, 2 OK #341/p pass modified ctx pointer to helper, 3 OK #342/p pass ctx or null check, 1: ctx Did not run the program (not supported) OK #343/p pass ctx or null check, 2: null Did not run the program (not supported) OK #344/p pass ctx or null check, 3: 1 OK #345/p pass ctx or null check, 4: ctx - const OK #346/p pass ctx or null check, 5: null (connect) Did not run the program (not supported) OK #347/p pass ctx or null check, 6: null (bind) Did not run the program (not supported) OK #348/p pass ctx or null check, 7: ctx (bind) Did not run the program (not supported) OK #349/p pass ctx or null check, 8: null (bind) OK #350/u access skb fields ok SKIP #350/p access skb fields ok OK #351/u access skb fields bad1 SKIP #351/p access skb fields bad1 OK #352/u access skb fields bad2 SKIP #352/p access skb fields bad2 OK #353/u access skb fields bad3 SKIP #353/p access skb fields bad3 OK #354/u access skb fields bad4 SKIP #354/p access skb fields bad4 OK #355/u invalid access __sk_buff family SKIP #355/p invalid access __sk_buff family OK #356/u invalid access __sk_buff remote_ip4 SKIP #356/p invalid access __sk_buff remote_ip4 OK #357/u invalid access __sk_buff local_ip4 SKIP #357/p invalid access __sk_buff local_ip4 OK #358/u invalid access __sk_buff remote_ip6 SKIP #358/p invalid access __sk_buff remote_ip6 OK #359/u invalid access __sk_buff local_ip6 SKIP #359/p invalid access __sk_buff local_ip6 OK #360/u invalid access __sk_buff remote_port SKIP #360/p invalid access __sk_buff remote_port OK #361/u invalid access __sk_buff remote_port SKIP #361/p invalid access __sk_buff remote_port OK #362/p valid access __sk_buff family Did not run the program (not supported) OK #363/p valid access __sk_buff remote_ip4 Did not run the program (not supported) OK #364/p valid access __sk_buff local_ip4 Did not run the program (not supported) OK #365/p valid access __sk_buff remote_ip6 Did not run the program (not supported) OK #366/p valid access __sk_buff local_ip6 Did not run the program (not supported) OK #367/p valid access __sk_buff remote_port Did not run the program (not supported) OK #368/p valid access __sk_buff remote_port Did not run the program (not supported) OK #369/p invalid access of tc_classid for SK_SKB OK #370/p invalid access of skb->mark for SK_SKB OK #371/p check skb->mark is not writeable by SK_SKB OK #372/p check skb->tc_index is writeable by SK_SKB Did not run the program (not supported) OK #373/p check skb->priority is writeable by SK_SKB Did not run the program (not supported) OK #374/p direct packet read for SK_SKB Did not run the program (not supported) OK #375/p direct packet write for SK_SKB Did not run the program (not supported) OK #376/p overlapping checks for direct packet access SK_SKB Did not run the program (not supported) OK #377/u check skb->mark is not writeable by sockets SKIP #377/p check skb->mark is not writeable by sockets OK #378/u check skb->tc_index is not writeable by sockets SKIP #378/p check skb->tc_index is not writeable by sockets OK #379/u check cb access: byte SKIP #379/p check cb access: byte OK #380/u __sk_buff->hash, offset 0, byte store not permitted SKIP #380/p __sk_buff->hash, offset 0, byte store not permitted OK #381/u __sk_buff->tc_index, offset 3, byte store not permitted SKIP #381/p __sk_buff->tc_index, offset 3, byte store not permitted OK #382/u check skb->hash byte load permitted SKIP #382/p check skb->hash byte load permitted OK #383/u check skb->hash byte load permitted 1 SKIP #383/p check skb->hash byte load permitted 1 OK #384/u check skb->hash byte load permitted 2 SKIP #384/p check skb->hash byte load permitted 2 OK #385/u check skb->hash byte load permitted 3 SKIP #385/p check skb->hash byte load permitted 3 OK #386/p check cb access: byte, wrong type OK #387/u check cb access: half SKIP #387/p check cb access: half OK #388/u check cb access: half, unaligned SKIP #388/p check cb access: half, unaligned OK #389/u check __sk_buff->hash, offset 0, half store not permitted SKIP #389/p check __sk_buff->hash, offset 0, half store not permitted OK #390/u check __sk_buff->tc_index, offset 2, half store not permitted SKIP #390/p check __sk_buff->tc_index, offset 2, half store not permitted OK #391/u check skb->hash half load permitted SKIP #391/p check skb->hash half load permitted OK #392/u check skb->hash half load permitted 2 SKIP #392/p check skb->hash half load permitted 2 OK #393/u check skb->hash half load not permitted, unaligned 1 SKIP #393/p check skb->hash half load not permitted, unaligned 1 OK #394/u check skb->hash half load not permitted, unaligned 3 SKIP #394/p check skb->hash half load not permitted, unaligned 3 OK #395/p check cb access: half, wrong type OK #396/u check cb access: word SKIP #396/p check cb access: word OK #397/u check cb access: word, unaligned 1 SKIP #397/p check cb access: word, unaligned 1 OK #398/u check cb access: word, unaligned 2 SKIP #398/p check cb access: word, unaligned 2 OK #399/u check cb access: word, unaligned 3 SKIP #399/p check cb access: word, unaligned 3 OK #400/u check cb access: word, unaligned 4 SKIP #400/p check cb access: word, unaligned 4 OK #401/u check cb access: double SKIP #401/p check cb access: double OK #402/u check cb access: double, unaligned 1 SKIP #402/p check cb access: double, unaligned 1 OK #403/u check cb access: double, unaligned 2 SKIP #403/p check cb access: double, unaligned 2 OK #404/u check cb access: double, oob 1 SKIP #404/p check cb access: double, oob 1 OK #405/u check cb access: double, oob 2 SKIP #405/p check cb access: double, oob 2 OK #406/u check __sk_buff->ifindex dw store not permitted SKIP #406/p check __sk_buff->ifindex dw store not permitted OK #407/u check __sk_buff->ifindex dw load not permitted SKIP #407/p check __sk_buff->ifindex dw load not permitted OK #408/p check cb access: double, wrong type OK #409/p check out of range skb->cb access OK #410/u write skb fields from socket prog SKIP #410/p write skb fields from socket prog OK #411/p write skb fields from tc_cls_act prog OK #412/u check skb->data half load not permitted SKIP #412/p check skb->data half load not permitted OK #413/u read gso_segs from CGROUP_SKB SKIP #413/p read gso_segs from CGROUP_SKB OK #414/u read gso_segs from CGROUP_SKB SKIP #414/p read gso_segs from CGROUP_SKB OK #415/u write gso_segs from CGROUP_SKB SKIP #415/p write gso_segs from CGROUP_SKB OK #416/p read gso_segs from CLS OK #417/u read gso_size from CGROUP_SKB SKIP #417/p read gso_size from CGROUP_SKB OK #418/u read gso_size from CGROUP_SKB SKIP #418/p read gso_size from CGROUP_SKB OK #419/u write gso_size from CGROUP_SKB SKIP #419/p write gso_size from CGROUP_SKB OK #420/p read gso_size from CLS OK #421/p padding after gso_size is not accessible OK #422/u read hwtstamp from CGROUP_SKB SKIP #422/p read hwtstamp from CGROUP_SKB OK #423/u read hwtstamp from CGROUP_SKB SKIP #423/p read hwtstamp from CGROUP_SKB OK #424/u write hwtstamp from CGROUP_SKB SKIP #424/p write hwtstamp from CGROUP_SKB OK #425/p read hwtstamp from CLS OK #426/u check wire_len is not readable by sockets SKIP #426/p check wire_len is not readable by sockets OK #427/p check wire_len is readable by tc classifier OK #428/p check wire_len is not writable by tc classifier OK #429/p pkt > pkt_end taken check Did not run the program (not supported) OK #430/p pkt_end < pkt taken check Did not run the program (not supported) OK #431/p valid 1,2,4,8-byte reads from bpf_sk_lookup OK #432/p invalid 8-byte read from bpf_sk_lookup family field OK #433/p invalid 8-byte read from bpf_sk_lookup protocol field OK #434/p invalid 8-byte read from bpf_sk_lookup remote_ip4 field OK #435/p invalid 8-byte read from bpf_sk_lookup remote_ip6 field OK #436/p invalid 8-byte read from bpf_sk_lookup remote_port field OK #437/p invalid 8-byte read from bpf_sk_lookup local_ip4 field OK #438/p invalid 8-byte read from bpf_sk_lookup local_ip6 field OK #439/p invalid 8-byte read from bpf_sk_lookup local_port field OK #440/p invalid 8-byte read from bpf_sk_lookup ingress_ifindex field OK #441/p invalid 4-byte read from bpf_sk_lookup sk field OK #442/p invalid 2-byte read from bpf_sk_lookup sk field OK #443/p invalid 1-byte read from bpf_sk_lookup sk field OK #444/p invalid 4-byte read past end of bpf_sk_lookup OK #445/p invalid 4-byte unaligned read from bpf_sk_lookup at odd offset OK #446/p invalid 4-byte unaligned read from bpf_sk_lookup at even offset OK #447/p invalid 8-byte write to bpf_sk_lookup OK #448/p invalid 4-byte write to bpf_sk_lookup OK #449/p invalid 2-byte write to bpf_sk_lookup OK #450/p invalid 1-byte write to bpf_sk_lookup OK #451/p invalid 4-byte write past end of bpf_sk_lookup OK #452/p valid access family in SK_MSG Did not run the program (not supported) OK #453/p valid access remote_ip4 in SK_MSG Did not run the program (not supported) OK #454/p valid access local_ip4 in SK_MSG Did not run the program (not supported) OK #455/p valid access remote_port in SK_MSG Did not run the program (not supported) OK #456/p valid access local_port in SK_MSG Did not run the program (not supported) OK #457/p valid access remote_ip6 in SK_MSG Did not run the program (not supported) OK #458/p valid access local_ip6 in SK_MSG Did not run the program (not supported) OK #459/p valid access size in SK_MSG Did not run the program (not supported) OK #460/p invalid 64B read of size in SK_MSG OK #461/p invalid read past end of SK_MSG OK #462/p invalid read offset in SK_MSG OK #463/p direct packet read for SK_MSG Did not run the program (not supported) OK #464/p direct packet write for SK_MSG Did not run the program (not supported) OK #465/p overlapping checks for direct packet access SK_MSG Did not run the program (not supported) OK #466/u dead code: start SKIP #466/p dead code: start OK #467/u dead code: mid 1 SKIP #467/p dead code: mid 1 OK #468/u dead code: mid 2 SKIP #468/p dead code: mid 2 OK #469/u dead code: end 1 SKIP #469/p dead code: end 1 OK #470/u dead code: end 2 SKIP #470/p dead code: end 2 OK #471/u dead code: end 3 SKIP #471/p dead code: end 3 OK #472/u dead code: tail of main + func SKIP #472/p dead code: tail of main + func OK #473/u dead code: tail of main + two functions SKIP #473/p dead code: tail of main + two functions OK #474/u dead code: function in the middle and mid of another func SKIP #474/p dead code: function in the middle and mid of another func OK #475/u dead code: middle of main before call SKIP #475/p dead code: middle of main before call OK #476/u dead code: start of a function SKIP #476/p dead code: start of a function OK #477/u dead code: zero extension SKIP #477/p dead code: zero extension OK #478/p pkt_end - pkt_start is allowed OK #479/p direct packet access: test1 OK #480/p direct packet access: test2 OK #481/u direct packet access: test3 SKIP #481/p direct packet access: test3 OK #482/p direct packet access: test4 (write) OK #483/p direct packet access: test5 (pkt_end >= reg, good access) OK #484/p direct packet access: test6 (pkt_end >= reg, bad access) OK #485/p direct packet access: test7 (pkt_end >= reg, both accesses) OK #486/p direct packet access: test8 (double test, variant 1) OK #487/p direct packet access: test9 (double test, variant 2) OK #488/p direct packet access: test10 (write invalid) OK #489/p direct packet access: test11 (shift, good access) OK #490/p direct packet access: test12 (and, good access) OK #491/p direct packet access: test13 (branches, good access) OK #492/p direct packet access: test14 (pkt_ptr += 0, CONST_IMM, good access) OK #493/p direct packet access: test15 (spill with xadd) OK #494/p direct packet access: test16 (arith on data_end) OK #495/p direct packet access: test17 (pruning, alignment) OK #496/p direct packet access: test18 (imm += pkt_ptr, 1) OK #497/p direct packet access: test19 (imm += pkt_ptr, 2) OK #498/p direct packet access: test20 (x += pkt_ptr, 1) OK #499/p direct packet access: test21 (x += pkt_ptr, 2) OK #500/p direct packet access: test22 (x += pkt_ptr, 3) OK #501/p direct packet access: test23 (x += pkt_ptr, 4) OK #502/p direct packet access: test24 (x += pkt_ptr, 5) OK #503/p direct packet access: test25 (marking on <, good access) OK #504/p direct packet access: test26 (marking on <, bad access) OK #505/p direct packet access: test27 (marking on <=, good access) OK #506/p direct packet access: test28 (marking on <=, bad access) OK #507/p direct packet access: test29 (reg > pkt_end in subprog) OK #508/u direct stack access with 32-bit wraparound. test1 SKIP #508/p direct stack access with 32-bit wraparound. test1 OK #509/u direct stack access with 32-bit wraparound. test2 SKIP #509/p direct stack access with 32-bit wraparound. test2 OK #510/u direct stack access with 32-bit wraparound. test3 SKIP #510/p direct stack access with 32-bit wraparound. test3 OK #511/u direct map access, write test 1 SKIP #511/p direct map access, write test 1 OK #512/u direct map access, write test 2 SKIP #512/p direct map access, write test 2 OK #513/u direct map access, write test 3 SKIP #513/p direct map access, write test 3 OK #514/u direct map access, write test 4 SKIP #514/p direct map access, write test 4 OK #515/u direct map access, write test 5 SKIP #515/p direct map access, write test 5 OK #516/u direct map access, write test 6 SKIP #516/p direct map access, write test 6 OK #517/u direct map access, write test 7 SKIP #517/p direct map access, write test 7 OK #518/u direct map access, write test 8 SKIP #518/p direct map access, write test 8 OK #519/u direct map access, write test 9 SKIP #519/p direct map access, write test 9 OK #520/u direct map access, write test 10 SKIP #520/p direct map access, write test 10 OK #521/u direct map access, write test 11 SKIP #521/p direct map access, write test 11 OK #522/u direct map access, write test 12 SKIP #522/p direct map access, write test 12 OK #523/u direct map access, write test 13 SKIP #523/p direct map access, write test 13 OK #524/u direct map access, write test 14 SKIP #524/p direct map access, write test 14 OK #525/u direct map access, write test 15 SKIP #525/p direct map access, write test 15 OK #526/u direct map access, write test 16 SKIP #526/p direct map access, write test 16 OK #527/u direct map access, write test 17 SKIP #527/p direct map access, write test 17 OK #528/u direct map access, write test 18 SKIP #528/p direct map access, write test 18 OK #529/u direct map access, write test 19 SKIP #529/p direct map access, write test 19 OK #530/u direct map access, write test 20 SKIP #530/p direct map access, write test 20 OK #531/u direct map access, invalid insn test 1 SKIP #531/p direct map access, invalid insn test 1 OK #532/u direct map access, invalid insn test 2 SKIP #532/p direct map access, invalid insn test 2 OK #533/u direct map access, invalid insn test 3 SKIP #533/p direct map access, invalid insn test 3 OK #534/u direct map access, invalid insn test 4 SKIP #534/p direct map access, invalid insn test 4 OK #535/u direct map access, invalid insn test 5 SKIP #535/p direct map access, invalid insn test 5 OK #536/u direct map access, invalid insn test 6 SKIP #536/p direct map access, invalid insn test 6 OK #537/u direct map access, invalid insn test 7 SKIP #537/p direct map access, invalid insn test 7 OK #538/u direct map access, invalid insn test 8 SKIP #538/p direct map access, invalid insn test 8 OK #539/u direct map access, invalid insn test 9 SKIP #539/p direct map access, invalid insn test 9 OK #540/u DIV32 by 0, zero check 1 SKIP #540/p DIV32 by 0, zero check 1 OK #541/u DIV32 by 0, zero check 2 SKIP #541/p DIV32 by 0, zero check 2 OK #542/u DIV64 by 0, zero check SKIP #542/p DIV64 by 0, zero check OK #543/u MOD32 by 0, zero check 1 SKIP #543/p MOD32 by 0, zero check 1 OK #544/u MOD32 by 0, zero check 2 SKIP #544/p MOD32 by 0, zero check 2 OK #545/u MOD64 by 0, zero check SKIP #545/p MOD64 by 0, zero check OK #546/p DIV32 by 0, zero check ok, cls OK #547/p DIV32 by 0, zero check 1, cls OK #548/p DIV32 by 0, zero check 2, cls OK #549/p DIV64 by 0, zero check, cls OK #550/p MOD32 by 0, zero check ok, cls OK #551/p MOD32 by 0, zero check 1, cls OK #552/p MOD32 by 0, zero check 2, cls OK #553/p MOD64 by 0, zero check 1, cls OK #554/p MOD64 by 0, zero check 2, cls OK #555/p DIV32 overflow, check 1 OK #556/p DIV32 overflow, check 2 OK #557/p DIV64 overflow, check 1 OK #558/p DIV64 overflow, check 2 OK #559/p MOD32 overflow, check 1 OK #560/p MOD32 overflow, check 2 OK #561/p MOD64 overflow, check 1 OK #562/p MOD64 overflow, check 2 OK #563/p d_path accept OK #564/p d_path reject OK #565/p perfevent for sockops Did not run the program (not supported) OK #566/p perfevent for tc OK #567/p perfevent for lwt out OK #568/p perfevent for xdp OK #569/u perfevent for socket filter SKIP #569/p perfevent for socket filter OK #570/p perfevent for sk_skb Did not run the program (not supported) OK #571/u perfevent for cgroup skb SKIP #571/p perfevent for cgroup skb OK #572/p perfevent for cgroup dev Did not run the program (not supported) OK #573/p perfevent for cgroup sysctl Did not run the program (not supported) OK #574/p perfevent for cgroup sockopt Did not run the program (not supported) OK #575/p helper access to variable memory: stack, bitwise AND + JMP, correct bounds Did not run the program (not supported) OK #576/p helper access to variable memory: stack, bitwise AND, zero included OK #577/p helper access to variable memory: stack, bitwise AND + JMP, wrong max OK #578/p helper access to variable memory: stack, JMP, correct bounds Did not run the program (not supported) OK #579/p helper access to variable memory: stack, JMP (signed), correct bounds Did not run the program (not supported) OK #580/p helper access to variable memory: stack, JMP, bounds + offset OK #581/p helper access to variable memory: stack, JMP, wrong max OK #582/p helper access to variable memory: stack, JMP, no max check OK #583/p helper access to variable memory: stack, JMP, no min check OK #584/p helper access to variable memory: stack, JMP (signed), no min check OK #585/p helper access to variable memory: map, JMP, correct bounds Did not run the program (not supported) OK #586/p helper access to variable memory: map, JMP, wrong max OK #587/p helper access to variable memory: map adjusted, JMP, correct bounds Did not run the program (not supported) OK #588/p helper access to variable memory: map adjusted, JMP, wrong max OK #589/p helper access to variable memory: size = 0 allowed on NULL (ARG_PTR_TO_MEM_OR_NULL) OK #590/p helper access to variable memory: size > 0 not allowed on NULL (ARG_PTR_TO_MEM_OR_NULL) OK #591/p helper access to variable memory: size = 0 allowed on != NULL stack pointer (ARG_PTR_TO_MEM_OR_NULL) OK #592/p helper access to variable memory: size = 0 allowed on != NULL map pointer (ARG_PTR_TO_MEM_OR_NULL) OK #593/p helper access to variable memory: size possible = 0 allowed on != NULL stack pointer (ARG_PTR_TO_MEM_OR_NULL) OK #594/p helper access to variable memory: size possible = 0 allowed on != NULL map pointer (ARG_PTR_TO_MEM_OR_NULL) OK #595/p helper access to variable memory: size possible = 0 allowed on != NULL packet pointer (ARG_PTR_TO_MEM_OR_NULL) OK #596/p helper access to variable memory: size = 0 not allowed on NULL (!ARG_PTR_TO_MEM_OR_NULL) OK #597/p helper access to variable memory: size > 0 not allowed on NULL (!ARG_PTR_TO_MEM_OR_NULL) OK #598/p helper access to variable memory: size = 0 allowed on != NULL stack pointer (!ARG_PTR_TO_MEM_OR_NULL) Did not run the program (not supported) OK #599/p helper access to variable memory: size = 0 allowed on != NULL map pointer (!ARG_PTR_TO_MEM_OR_NULL) Did not run the program (not supported) OK #600/p helper access to variable memory: size possible = 0 allowed on != NULL stack pointer (!ARG_PTR_TO_MEM_OR_NULL) Did not run the program (not supported) OK #601/p helper access to variable memory: size possible = 0 allowed on != NULL map pointer (!ARG_PTR_TO_MEM_OR_NULL) Did not run the program (not supported) OK #602/p helper access to variable memory: 8 bytes leak OK #603/p helper access to variable memory: 8 bytes no leak (init memory) Did not run the program (not supported) OK #604/p helper access to packet: test1, valid packet_ptr range OK #605/p helper access to packet: test2, unchecked packet_ptr OK #606/p helper access to packet: test3, variable add OK #607/p helper access to packet: test4, packet_ptr with bad range OK #608/p helper access to packet: test5, packet_ptr with too short range OK #609/p helper access to packet: test6, cls valid packet_ptr range OK #610/p helper access to packet: test7, cls unchecked packet_ptr OK #611/p helper access to packet: test8, cls variable add OK #612/p helper access to packet: test9, cls packet_ptr with bad range OK #613/p helper access to packet: test10, cls packet_ptr with too short range OK #614/p helper access to packet: test11, cls unsuitable helper 1 OK #615/p helper access to packet: test12, cls unsuitable helper 2 OK #616/p helper access to packet: test13, cls helper ok OK #617/p helper access to packet: test14, cls helper ok sub OK #618/p helper access to packet: test15, cls helper fail sub OK #619/p helper access to packet: test16, cls helper fail range 1 OK #620/p helper access to packet: test17, cls helper fail range 2 OK #621/p helper access to packet: test18, cls helper fail range 3 OK #622/p helper access to packet: test19, cls helper range zero OK #623/p helper access to packet: test20, pkt end as input OK #624/p helper access to packet: test21, wrong reg OK #625/p bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_KPROBE OK #626/p bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_TRACEPOINT OK #627/p bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_PERF_EVENT OK #628/p bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT OK #629/p bpf_timer_init isn restricted in BPF_PROG_TYPE_KPROBE OK #630/p bpf_timer_init is forbidden in BPF_PROG_TYPE_PERF_EVENT OK #631/p bpf_timer_init is forbidden in BPF_PROG_TYPE_TRACEPOINT OK #632/p bpf_timer_init is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT OK #633/p bpf_spin_lock is forbidden in BPF_PROG_TYPE_KPROBE OK #634/p bpf_spin_lock is forbidden in BPF_PROG_TYPE_TRACEPOINT OK #635/p bpf_spin_lock is forbidden in BPF_PROG_TYPE_PERF_EVENT OK #636/p bpf_spin_lock is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT OK #637/p helper access to map: full range Did not run the program (not supported) OK #638/p helper access to map: partial range Did not run the program (not supported) OK #639/p helper access to map: empty range OK #640/p helper access to map: out-of-bound range OK #641/p helper access to map: negative range OK #642/p helper access to adjusted map (via const imm): full range Did not run the program (not supported) OK #643/p helper access to adjusted map (via const imm): partial range Did not run the program (not supported) OK #644/p helper access to adjusted map (via const imm): empty range OK #645/p helper access to adjusted map (via const imm): out-of-bound range OK #646/p helper access to adjusted map (via const imm): negative range (> adjustment) OK #647/p helper access to adjusted map (via const imm): negative range (< adjustment) OK #648/p helper access to adjusted map (via const reg): full range Did not run the program (not supported) OK #649/p helper access to adjusted map (via const reg): partial range Did not run the program (not supported) OK #650/p helper access to adjusted map (via const reg): empty range OK #651/p helper access to adjusted map (via const reg): out-of-bound range OK #652/p helper access to adjusted map (via const reg): negative range (> adjustment) OK #653/p helper access to adjusted map (via const reg): negative range (< adjustment) OK #654/p helper access to adjusted map (via variable): full range Did not run the program (not supported) OK #655/p helper access to adjusted map (via variable): partial range Did not run the program (not supported) OK #656/p helper access to adjusted map (via variable): empty range OK #657/p helper access to adjusted map (via variable): no max check OK #658/p helper access to adjusted map (via variable): wrong max check OK #659/p helper access to map: bounds check using <, good access Did not run the program (not supported) OK #660/p helper access to map: bounds check using <, bad access OK #661/p helper access to map: bounds check using <=, good access Did not run the program (not supported) OK #662/p helper access to map: bounds check using <=, bad access OK #663/p helper access to map: bounds check using s<, good access Did not run the program (not supported) OK #664/p helper access to map: bounds check using s<, good access 2 Did not run the program (not supported) OK #665/p helper access to map: bounds check using s<, bad access OK #666/p helper access to map: bounds check using s<=, good access Did not run the program (not supported) OK #667/p helper access to map: bounds check using s<=, good access 2 Did not run the program (not supported) OK #668/p helper access to map: bounds check using s<=, bad access OK #669/p map lookup helper access to map Did not run the program (not supported) OK #670/p map update helper access to map Did not run the program (not supported) OK #671/p map update helper access to map: wrong size OK #672/p map helper access to adjusted map (via const imm) Did not run the program (not supported) OK #673/p map helper access to adjusted map (via const imm): out-of-bound 1 OK #674/p map helper access to adjusted map (via const imm): out-of-bound 2 OK #675/p map helper access to adjusted map (via const reg) Did not run the program (not supported) OK #676/p map helper access to adjusted map (via const reg): out-of-bound 1 OK #677/p map helper access to adjusted map (via const reg): out-of-bound 2 OK #678/p map helper access to adjusted map (via variable) Did not run the program (not supported) OK #679/p map helper access to adjusted map (via variable): no max check OK #680/p map helper access to adjusted map (via variable): wrong max check OK #681/p ARG_PTR_TO_LONG uninitialized OK #682/p ARG_PTR_TO_LONG half-uninitialized OK #683/p ARG_PTR_TO_LONG misaligned OK #684/p ARG_PTR_TO_LONG size < sizeof(long) OK #685/p ARG_PTR_TO_LONG initialized Did not run the program (not supported) OK #686/u jit: lsh, rsh, arsh by 1 SKIP #686/p jit: lsh, rsh, arsh by 1 OK #687/u jit: mov32 for ldimm64, 1 SKIP #687/p jit: mov32 for ldimm64, 1 OK #688/u jit: mov32 for ldimm64, 2 SKIP #688/p jit: mov32 for ldimm64, 2 OK #689/u jit: various mul tests SKIP #689/p jit: various mul tests OK #690/u jit: various div tests SKIP #690/p jit: various div tests OK #691/u jit: jsgt, jslt SKIP #691/p jit: jsgt, jslt OK #692/p jit: torturous jumps, imm8 nop jmp and pure jump padding OK #693/p jit: torturous jumps, imm32 nop jmp and jmp_cond padding OK #694/p jit: torturous jumps in subprog OK #695/p jset32: BPF_K 3 cases OK #696/p jset32: BPF_X 3 cases OK #697/u jset32: ignores upper bits SKIP #697/p jset32: ignores upper bits OK #698/u jset32: min/max deduction SKIP #698/p jset32: min/max deduction OK #699/p jeq32: BPF_K 2 cases OK #700/p jeq32: BPF_X 3 cases OK #701/u jeq32: min/max deduction SKIP #701/p jeq32: min/max deduction OK #702/p jne32: BPF_K 2 cases OK #703/p jne32: BPF_X 3 cases OK #704/u jne32: min/max deduction SKIP #704/p jne32: min/max deduction OK #705/p jge32: BPF_K 3 cases OK #706/p jge32: BPF_X 3 cases OK #707/u jge32: min/max deduction SKIP #707/p jge32: min/max deduction OK #708/p jgt32: BPF_K 3 cases OK #709/p jgt32: BPF_X 3 cases OK #710/u jgt32: min/max deduction SKIP #710/p jgt32: min/max deduction OK #711/p jle32: BPF_K 3 cases OK #712/p jle32: BPF_X 3 cases OK #713/u jle32: min/max deduction SKIP #713/p jle32: min/max deduction OK #714/p jlt32: BPF_K 3 cases OK #715/p jlt32: BPF_X 3 cases OK #716/u jlt32: min/max deduction SKIP #716/p jlt32: min/max deduction OK #717/p jsge32: BPF_K 3 cases OK #718/p jsge32: BPF_X 3 cases OK #719/u jsge32: min/max deduction SKIP #719/p jsge32: min/max deduction OK #720/p jsgt32: BPF_K 3 cases OK #721/p jsgt32: BPF_X 3 cases OK #722/u jsgt32: min/max deduction SKIP #722/p jsgt32: min/max deduction OK #723/p jsle32: BPF_K 3 cases OK #724/p jsle32: BPF_X 3 cases OK #725/u jsle32: min/max deduction SKIP #725/p jsle32: min/max deduction OK #726/p jslt32: BPF_K 3 cases OK #727/p jslt32: BPF_X 3 cases OK #728/u jslt32: min/max deduction SKIP #728/p jslt32: min/max deduction OK #729/p jgt32: range bound deduction, reg op imm OK #730/p jgt32: range bound deduction, reg1 op reg2, reg1 unknown OK #731/p jle32: range bound deduction, reg1 op reg2, reg2 unknown OK #732/p jeq32/jne32: bounds checking OK #733/p jset: functional 7 cases OK #734/p jset: sign-extend OK #735/u jset: known const compare SKIP #735/p jset: known const compare OK #736/u jset: known const compare bad SKIP #736/p jset: known const compare bad OK #737/u jset: unknown const compare taken SKIP #737/p jset: unknown const compare taken OK #738/u jset: unknown const compare not taken SKIP #738/p jset: unknown const compare not taken OK #739/u jset: half-known const compare SKIP #739/p jset: half-known const compare OK #740/u jset: range SKIP #740/p jset: range OK #741/u jump test 1 SKIP #741/p jump test 1 OK #742/u jump test 2 SKIP #742/p jump test 2 OK #743/u jump test 3 SKIP #743/p jump test 3 OK #744/u jump test 4 SKIP #744/p jump test 4 OK #745/u jump test 5 SKIP #745/p jump test 5 OK #746/u jump test 6 SKIP #746/p jump test 6 OK #747/u jump test 7 SKIP #747/p jump test 7 OK #748/u jump test 8 SKIP #748/p jump test 8 OK #749/p jump/call test 9 OK #750/p jump/call test 10 OK #751/p jump/call test 11 OK #752/p jump & dead code elimination OK #753/u junk insn SKIP #753/p junk insn OK #754/u junk insn2 SKIP #754/p junk insn2 OK #755/u junk insn3 SKIP #755/p junk insn3 OK #756/u junk insn4 SKIP #756/p junk insn4 OK #757/u junk insn5 SKIP #757/p junk insn5 OK #758/u ld_abs: check calling conv, r1 SKIP #758/p ld_abs: check calling conv, r1 OK #759/u ld_abs: check calling conv, r2 SKIP #759/p ld_abs: check calling conv, r2 OK #760/u ld_abs: check calling conv, r3 SKIP #760/p ld_abs: check calling conv, r3 OK #761/u ld_abs: check calling conv, r4 SKIP #761/p ld_abs: check calling conv, r4 OK #762/u ld_abs: check calling conv, r5 SKIP #762/p ld_abs: check calling conv, r5 OK #763/u ld_abs: check calling conv, r7 SKIP #763/p ld_abs: check calling conv, r7 OK #764/p ld_abs: tests on r6 and skb data reload helper OK #765/p ld_abs: invalid op 1 OK #766/p ld_abs: invalid op 2 OK #767/p ld_abs: nmap reduced OK #768/p ld_abs: div + abs, test 1 OK #769/p ld_abs: div + abs, test 2 OK #770/p ld_abs: div + abs, test 3 OK #771/p ld_abs: div + abs, test 4 OK #772/p ld_abs: vlan + abs, test 1 OK #773/p ld_abs: vlan + abs, test 2 OK #774/p ld_abs: jump around ld_abs OK #775/p ld_dw: xor semi-random 64 bit imms, test 1 OK #776/p ld_dw: xor semi-random 64 bit imms, test 2 OK #777/p ld_dw: xor semi-random 64 bit imms, test 3 OK #778/p ld_dw: xor semi-random 64 bit imms, test 4 OK #779/p ld_dw: xor semi-random 64 bit imms, test 5 OK #780/u test1 ld_imm64 SKIP #780/p test1 ld_imm64 OK #781/u test2 ld_imm64 SKIP #781/p test2 ld_imm64 OK #782/u test3 ld_imm64 SKIP #782/p test3 ld_imm64 OK #783/u test4 ld_imm64 SKIP #783/p test4 ld_imm64 OK #784/u test6 ld_imm64 SKIP #784/p test6 ld_imm64 OK #785/u test7 ld_imm64 SKIP #785/p test7 ld_imm64 OK #786/u test8 ld_imm64 SKIP #786/p test8 ld_imm64 OK #787/u test9 ld_imm64 SKIP #787/p test9 ld_imm64 OK #788/u test10 ld_imm64 SKIP #788/p test10 ld_imm64 OK #789/u test11 ld_imm64 SKIP #789/p test11 ld_imm64 OK #790/u test12 ld_imm64 SKIP #790/p test12 ld_imm64 OK #791/u test13 ld_imm64 SKIP #791/p test13 ld_imm64 OK #792/u test14 ld_imm64: reject 2nd imm != 0 SKIP #792/p test14 ld_imm64: reject 2nd imm != 0 OK #793/u ld_ind: check calling conv, r1 SKIP #793/p ld_ind: check calling conv, r1 OK #794/u ld_ind: check calling conv, r2 SKIP #794/p ld_ind: check calling conv, r2 OK #795/u ld_ind: check calling conv, r3 SKIP #795/p ld_ind: check calling conv, r3 OK #796/u ld_ind: check calling conv, r4 SKIP #796/p ld_ind: check calling conv, r4 OK #797/u ld_ind: check calling conv, r5 SKIP #797/p ld_ind: check calling conv, r5 OK #798/u ld_ind: check calling conv, r7 SKIP #798/p ld_ind: check calling conv, r7 OK #799/u leak pointer into ctx 1 SKIP #799/p leak pointer into ctx 1 OK #800/u leak pointer into ctx 2 SKIP #800/p leak pointer into ctx 2 OK #801/u leak pointer into ctx 3 SKIP #801/p leak pointer into ctx 3 OK #802/u leak pointer into map val SKIP #802/p leak pointer into map val OK #803/p bounded loop, count to 4 Did not run the program (not supported) OK #804/p bounded loop, count to 20 Did not run the program (not supported) OK #805/p bounded loop, count from positive unknown to 4 Did not run the program (not supported) OK #806/p bounded loop, count from totally unknown to 4 Did not run the program (not supported) OK #807/p bounded loop, count to 4 with equality Did not run the program (not supported) OK #808/p bounded loop, start in the middle OK #809/p bounded loop containing a forward jump Did not run the program (not supported) OK #810/p bounded loop that jumps out rather than in Did not run the program (not supported) OK #811/p infinite loop after a conditional jump OK #812/p bounded recursion OK #813/p infinite loop in two jumps OK #814/p infinite loop: three-jump trick OK #815/p not-taken loop with back jump to 1st insn OK #816/p taken loop with back jump to 1st insn OK #817/p taken loop with back jump to 1st insn, 2 OK #818/p invalid direct packet write for LWT_IN OK #819/p invalid direct packet write for LWT_OUT OK #820/p direct packet write for LWT_XMIT OK #821/p direct packet read for LWT_IN OK #822/p direct packet read for LWT_OUT OK #823/p direct packet read for LWT_XMIT OK #824/p overlapping checks for direct packet access OK #825/p make headroom for LWT_XMIT OK #826/u invalid access of tc_classid for LWT_IN SKIP #826/p invalid access of tc_classid for LWT_IN OK #827/u invalid access of tc_classid for LWT_OUT SKIP #827/p invalid access of tc_classid for LWT_OUT OK #828/u invalid access of tc_classid for LWT_XMIT SKIP #828/p invalid access of tc_classid for LWT_XMIT OK #829/p check skb->tc_classid half load not permitted for lwt prog OK #830/u map in map access SKIP #830/p map in map access OK #831/p map in map state pruning OK #832/u invalid inner map pointer SKIP #832/p invalid inner map pointer OK #833/u forgot null checking on the inner map pointer SKIP #833/p forgot null checking on the inner map pointer OK #834/p map_kptr: BPF_ST imm != 0 OK #835/p map_kptr: size != bpf_size_to_bytes(BPF_DW) OK #836/p map_kptr: map_value non-const var_off OK #837/p map_kptr: bpf_kptr_xchg non-const var_off OK #838/p map_kptr: unaligned boundary load/store OK #839/p map_kptr: reject var_off != 0 OK #840/p map_kptr: unref: reject btf_struct_ids_match == false OK #841/p map_kptr: unref: loaded pointer marked as untrusted OK #842/p map_kptr: unref: correct in kernel type size OK #843/p map_kptr: unref: inherit PTR_UNTRUSTED on struct walk OK #844/p map_kptr: unref: no reference state created OK #845/p map_kptr: unref: bpf_kptr_xchg rejected OK #846/p map_kptr: unref: bpf_kfunc_call_test_kptr_get rejected OK #847/p map_kptr: ref: loaded pointer marked as untrusted OK #848/p map_kptr: ref: reject off != 0 OK #849/p map_kptr: ref: reference state created and released on xchg OK #850/p map_kptr: ref: reject STX OK #851/p map_kptr: ref: reject ST OK #852/p map_kptr: reject helper access to kptr OK #853/u bpf_map_ptr: read with negative offset rejected SKIP #853/p bpf_map_ptr: read with negative offset rejected OK #854/u bpf_map_ptr: write rejected SKIP #854/p bpf_map_ptr: write rejected OK #855/u bpf_map_ptr: read non-existent field rejected SKIP #855/p bpf_map_ptr: read non-existent field rejected OK #856/u bpf_map_ptr: read ops field accepted SKIP #856/p bpf_map_ptr: read ops field accepted OK #857/u bpf_map_ptr: r = 0, map_ptr = map_ptr + r SKIP #857/p bpf_map_ptr: r = 0, map_ptr = map_ptr + r OK #858/u bpf_map_ptr: r = 0, r = r + map_ptr SKIP #858/p bpf_map_ptr: r = 0, r = r + map_ptr OK #859/p calls: two calls returning different map pointers for lookup (hash, array) OK #860/p calls: two calls returning different map pointers for lookup (hash, map in map) OK #861/u cond: two branches returning different map pointers for lookup (tail, tail) SKIP #861/p cond: two branches returning different map pointers for lookup (tail, tail) OK #862/u cond: two branches returning same map pointers for lookup (tail, tail) SKIP #862/p cond: two branches returning same map pointers for lookup (tail, tail) OK #863/u invalid map_fd for function call SKIP #863/p invalid map_fd for function call OK #864/u don't check return value before access SKIP #864/p don't check return value before access OK #865/u access memory with incorrect alignment SKIP #865/p access memory with incorrect alignment OK #866/u sometimes access memory with incorrect alignment SKIP #866/p sometimes access memory with incorrect alignment OK #867/u masking, test out of bounds 1 SKIP #867/p masking, test out of bounds 1 OK #868/u masking, test out of bounds 2 SKIP #868/p masking, test out of bounds 2 OK #869/u masking, test out of bounds 3 SKIP #869/p masking, test out of bounds 3 OK #870/u masking, test out of bounds 4 SKIP #870/p masking, test out of bounds 4 OK #871/u masking, test out of bounds 5 SKIP #871/p masking, test out of bounds 5 OK #872/u masking, test out of bounds 6 SKIP #872/p masking, test out of bounds 6 OK #873/u masking, test out of bounds 7 SKIP #873/p masking, test out of bounds 7 OK #874/u masking, test out of bounds 8 SKIP #874/p masking, test out of bounds 8 OK #875/u masking, test out of bounds 9 SKIP #875/p masking, test out of bounds 9 OK #876/u masking, test out of bounds 10 SKIP #876/p masking, test out of bounds 10 OK #877/u masking, test out of bounds 11 SKIP #877/p masking, test out of bounds 11 OK #878/u masking, test out of bounds 12 SKIP #878/p masking, test out of bounds 12 OK #879/u masking, test in bounds 1 SKIP #879/p masking, test in bounds 1 OK #880/u masking, test in bounds 2 SKIP #880/p masking, test in bounds 2 OK #881/u masking, test in bounds 3 SKIP #881/p masking, test in bounds 3 OK #882/u masking, test in bounds 4 SKIP #882/p masking, test in bounds 4 OK #883/u masking, test in bounds 5 SKIP #883/p masking, test in bounds 5 OK #884/u masking, test in bounds 6 SKIP #884/p masking, test in bounds 6 OK #885/u masking, test in bounds 7 SKIP #885/p masking, test in bounds 7 OK #886/u masking, test in bounds 8 SKIP #886/p masking, test in bounds 8 OK #887/p meta access, test1 OK #888/p meta access, test2 OK #889/p meta access, test3 OK #890/p meta access, test4 OK #891/p meta access, test5 OK #892/p meta access, test6 OK #893/p meta access, test7 OK #894/p meta access, test8 OK #895/p meta access, test9 OK #896/p meta access, test10 OK #897/p meta access, test11 OK #898/p meta access, test12 OK #899/p check bpf_perf_event_data->sample_period byte load permitted Did not run the program (not supported) OK #900/p check bpf_perf_event_data->sample_period half load permitted Did not run the program (not supported) OK #901/p check bpf_perf_event_data->sample_period word load permitted Did not run the program (not supported) OK #902/p check bpf_perf_event_data->sample_period dword load permitted Did not run the program (not supported) OK #903/p precise: test 1 Did not run the program (not supported) OK #904/p precise: test 2 Did not run the program (not supported) OK #905/p precise: cross frame pruning OK #906/p precise: ST insn causing spi > allocated_stack OK #907/p precise: STX insn causing spi > allocated_stack OK #908/p precise: mark_chain_precision for ARG_CONST_ALLOC_SIZE_OR_ZERO OK #909/p prevent map lookup in stack trace OK #910/u prevent map lookup in prog array SKIP #910/p prevent map lookup in prog array OK #911/p raw_stack: no skb_load_bytes OK #912/p raw_stack: skb_load_bytes, negative len OK #913/p raw_stack: skb_load_bytes, negative len 2 OK #914/p raw_stack: skb_load_bytes, zero len OK #915/p raw_stack: skb_load_bytes, no init OK #916/p raw_stack: skb_load_bytes, init OK #917/p raw_stack: skb_load_bytes, spilled regs around bounds OK #918/p raw_stack: skb_load_bytes, spilled regs corruption OK #919/p raw_stack: skb_load_bytes, spilled regs corruption 2 OK #920/p raw_stack: skb_load_bytes, spilled regs + data OK #921/p raw_stack: skb_load_bytes, invalid access 1 OK #922/p raw_stack: skb_load_bytes, invalid access 2 OK #923/p raw_stack: skb_load_bytes, invalid access 3 OK #924/p raw_stack: skb_load_bytes, invalid access 4 OK #925/p raw_stack: skb_load_bytes, invalid access 5 OK #926/p raw_stack: skb_load_bytes, invalid access 6 OK #927/p raw_stack: skb_load_bytes, large access OK #928/p raw_tracepoint_writable: reject variable offset OK #929/p reference tracking: leak potential reference OK #930/p reference tracking: leak potential reference to sock_common OK #931/p reference tracking: leak potential reference on stack OK #932/p reference tracking: leak potential reference on stack 2 OK #933/p reference tracking: zero potential reference OK #934/p reference tracking: zero potential reference to sock_common OK #935/p reference tracking: copy and zero potential references OK #936/p reference tracking: release reference without check OK #937/p reference tracking: release reference to sock_common without check OK #938/p reference tracking: release reference OK #939/p reference tracking: release reference to sock_common OK #940/p reference tracking: release reference 2 OK #941/p reference tracking: release reference twice OK #942/p reference tracking: release reference twice inside branch OK #943/p reference tracking: alloc, check, free in one subbranch OK #944/p reference tracking: alloc, check, free in both subbranches OK #945/p reference tracking in call: free reference in subprog OK #946/p reference tracking in call: free reference in subprog and outside OK #947/p reference tracking in call: alloc & leak reference in subprog OK #948/p reference tracking in call: alloc in subprog, release outside OK #949/p reference tracking in call: sk_ptr leak into caller stack OK #950/p reference tracking in call: sk_ptr spill into caller stack OK #951/p reference tracking: allow LD_ABS OK #952/p reference tracking: forbid LD_ABS while holding reference OK #953/p reference tracking: allow LD_IND OK #954/p reference tracking: forbid LD_IND while holding reference OK #955/p reference tracking: check reference or tail call OK #956/p reference tracking: release reference then tail call OK #957/p reference tracking: leak possible reference over tail call OK #958/p reference tracking: leak checked reference over tail call OK #959/p reference tracking: mangle and release sock_or_null OK #960/p reference tracking: mangle and release sock OK #961/p reference tracking: access member OK #962/p reference tracking: write to member OK #963/p reference tracking: invalid 64-bit access of member OK #964/p reference tracking: access after release OK #965/p reference tracking: direct access for lookup OK #966/p reference tracking: use ptr from bpf_tcp_sock() after release OK #967/p reference tracking: use ptr from bpf_sk_fullsock() after release OK #968/p reference tracking: use ptr from bpf_sk_fullsock(tp) after release OK #969/p reference tracking: use sk after bpf_sk_release(tp) OK #970/p reference tracking: use ptr from bpf_get_listener_sock() after bpf_sk_release(sk) OK #971/p reference tracking: bpf_sk_release(listen_sk) OK #972/p reference tracking: tp->snd_cwnd after bpf_sk_fullsock(sk) and bpf_tcp_sock(sk) OK #973/p reference tracking: branch tracking valid pointer null comparison OK #974/p reference tracking: branch tracking valid pointer value comparison OK #975/p reference tracking: bpf_sk_release(btf_tcp_sock) OK #976/p reference tracking: use ptr from bpf_skc_to_tcp_sock() after release OK #977/p regalloc basic Did not run the program (not supported) OK #978/p regalloc negative OK #979/p regalloc src_reg mark Did not run the program (not supported) OK #980/p regalloc src_reg negative OK #981/p regalloc and spill Did not run the program (not supported) OK #982/p regalloc and spill negative OK #983/p regalloc three regs Did not run the program (not supported) OK #984/p regalloc after call Did not run the program (not supported) OK #985/p regalloc in callee Did not run the program (not supported) OK #986/p regalloc, spill, JEQ Did not run the program (not supported) OK #987/u ringbuf: invalid reservation offset 1 SKIP #987/p ringbuf: invalid reservation offset 1 OK #988/u ringbuf: invalid reservation offset 2 SKIP #988/p ringbuf: invalid reservation offset 2 OK #989/p ringbuf: check passing rb mem to helpers OK #990/u runtime/jit: tail_call within bounds, prog once SKIP #990/p runtime/jit: tail_call within bounds, prog once OK #991/u runtime/jit: tail_call within bounds, prog loop SKIP #991/p runtime/jit: tail_call within bounds, prog loop OK #992/u runtime/jit: tail_call within bounds, no prog SKIP #992/p runtime/jit: tail_call within bounds, no prog OK #993/u runtime/jit: tail_call within bounds, key 2 SKIP #993/p runtime/jit: tail_call within bounds, key 2 OK #994/u runtime/jit: tail_call within bounds, key 2 / key 2, first branch SKIP #994/p runtime/jit: tail_call within bounds, key 2 / key 2, first branch OK #995/u runtime/jit: tail_call within bounds, key 2 / key 2, second branch SKIP #995/p runtime/jit: tail_call within bounds, key 2 / key 2, second branch OK #996/u runtime/jit: tail_call within bounds, key 0 / key 2, first branch SKIP #996/p runtime/jit: tail_call within bounds, key 0 / key 2, first branch OK #997/u runtime/jit: tail_call within bounds, key 0 / key 2, second branch SKIP #997/p runtime/jit: tail_call within bounds, key 0 / key 2, second branch OK #998/u runtime/jit: tail_call within bounds, different maps, first branch SKIP #998/p runtime/jit: tail_call within bounds, different maps, first branch OK #999/u runtime/jit: tail_call within bounds, different maps, second branch SKIP #999/p runtime/jit: tail_call within bounds, different maps, second branch OK #1000/u runtime/jit: tail_call out of bounds SKIP #1000/p runtime/jit: tail_call out of bounds OK #1001/u runtime/jit: pass negative index to tail_call SKIP #1001/p runtime/jit: pass negative index to tail_call OK #1002/u runtime/jit: pass > 32bit index to tail_call SKIP #1002/p runtime/jit: pass > 32bit index to tail_call OK #1003/p scale: scale test 1 OK #1004/p scale: scale test 2 OK #1005/u pointer/scalar confusion in state equality check (way 1) SKIP #1005/p pointer/scalar confusion in state equality check (way 1) OK #1006/u pointer/scalar confusion in state equality check (way 2) SKIP #1006/p pointer/scalar confusion in state equality check (way 2) OK #1007/p liveness pruning and write screening OK #1008/u varlen_map_value_access pruning SKIP #1008/p varlen_map_value_access pruning OK #1009/p search pruning: all branches should be verified (nop operation) OK #1010/p search pruning: all branches should be verified (invalid stack access) OK #1011/p precision tracking for u32 spill/fill OK #1012/p precision tracking for u32 spills, u64 fill OK #1013/u allocated_stack SKIP #1013/p allocated_stack OK #1014/u skb->sk: no NULL check SKIP #1014/p skb->sk: no NULL check OK #1015/u skb->sk: sk->family [non fullsock field] SKIP #1015/p skb->sk: sk->family [non fullsock field] OK #1016/u skb->sk: sk->type [fullsock field] SKIP #1016/p skb->sk: sk->type [fullsock field] OK #1017/u bpf_sk_fullsock(skb->sk): no !skb->sk check SKIP #1017/p bpf_sk_fullsock(skb->sk): no !skb->sk check OK #1018/u sk_fullsock(skb->sk): no NULL check on ret SKIP #1018/p sk_fullsock(skb->sk): no NULL check on ret OK #1019/u sk_fullsock(skb->sk): sk->type [fullsock field] SKIP #1019/p sk_fullsock(skb->sk): sk->type [fullsock field] OK #1020/u sk_fullsock(skb->sk): sk->family [non fullsock field] SKIP #1020/p sk_fullsock(skb->sk): sk->family [non fullsock field] OK #1021/u sk_fullsock(skb->sk): sk->state [narrow load] SKIP #1021/p sk_fullsock(skb->sk): sk->state [narrow load] OK #1022/u sk_fullsock(skb->sk): sk->dst_port [word load] (backward compatibility) SKIP #1022/p sk_fullsock(skb->sk): sk->dst_port [word load] (backward compatibility) OK #1023/u sk_fullsock(skb->sk): sk->dst_port [half load] SKIP #1023/p sk_fullsock(skb->sk): sk->dst_port [half load] OK #1024/u sk_fullsock(skb->sk): sk->dst_port [half load] (invalid) SKIP #1024/p sk_fullsock(skb->sk): sk->dst_port [half load] (invalid) OK #1025/u sk_fullsock(skb->sk): sk->dst_port [byte load] SKIP #1025/p sk_fullsock(skb->sk): sk->dst_port [byte load] OK #1026/u sk_fullsock(skb->sk): sk->dst_port [byte load] (invalid) SKIP #1026/p sk_fullsock(skb->sk): sk->dst_port [byte load] (invalid) OK #1027/u sk_fullsock(skb->sk): past sk->dst_port [half load] (invalid) SKIP #1027/p sk_fullsock(skb->sk): past sk->dst_port [half load] (invalid) OK #1028/u sk_fullsock(skb->sk): sk->dst_ip6 [load 2nd byte] SKIP #1028/p sk_fullsock(skb->sk): sk->dst_ip6 [load 2nd byte] OK #1029/u sk_fullsock(skb->sk): sk->type [narrow load] SKIP #1029/p sk_fullsock(skb->sk): sk->type [narrow load] OK #1030/u sk_fullsock(skb->sk): sk->protocol [narrow load] SKIP #1030/p sk_fullsock(skb->sk): sk->protocol [narrow load] OK #1031/u sk_fullsock(skb->sk): beyond last field SKIP #1031/p sk_fullsock(skb->sk): beyond last field OK #1032/u bpf_tcp_sock(skb->sk): no !skb->sk check SKIP #1032/p bpf_tcp_sock(skb->sk): no !skb->sk check OK #1033/u bpf_tcp_sock(skb->sk): no NULL check on ret SKIP #1033/p bpf_tcp_sock(skb->sk): no NULL check on ret OK #1034/u bpf_tcp_sock(skb->sk): tp->snd_cwnd SKIP #1034/p bpf_tcp_sock(skb->sk): tp->snd_cwnd OK #1035/u bpf_tcp_sock(skb->sk): tp->bytes_acked SKIP #1035/p bpf_tcp_sock(skb->sk): tp->bytes_acked OK #1036/u bpf_tcp_sock(skb->sk): beyond last field SKIP #1036/p bpf_tcp_sock(skb->sk): beyond last field OK #1037/u bpf_tcp_sock(bpf_sk_fullsock(skb->sk)): tp->snd_cwnd SKIP #1037/p bpf_tcp_sock(bpf_sk_fullsock(skb->sk)): tp->snd_cwnd OK #1038/p bpf_sk_release(skb->sk) OK #1039/p bpf_sk_release(bpf_sk_fullsock(skb->sk)) OK #1040/p bpf_sk_release(bpf_tcp_sock(skb->sk)) OK #1041/p sk_storage_get(map, skb->sk, NULL, 0): value == NULL OK #1042/p sk_storage_get(map, skb->sk, 1, 1): value == 1 OK #1043/p sk_storage_get(map, skb->sk, &stack_value, 1): stack_value OK #1044/p sk_storage_get(map, skb->sk, &stack_value, 1): partially init stack_value OK #1045/p bpf_map_lookup_elem(smap, &key) OK #1046/p bpf_map_lookup_elem(xskmap, &key); xs->queue_id OK #1047/p bpf_map_lookup_elem(sockmap, &key) OK #1048/p bpf_map_lookup_elem(sockhash, &key) OK #1049/p bpf_map_lookup_elem(sockmap, &key); sk->type [fullsock field]; bpf_sk_release(sk) Did not run the program (not supported) OK #1050/p bpf_map_lookup_elem(sockhash, &key); sk->type [fullsock field]; bpf_sk_release(sk) Did not run the program (not supported) OK #1051/p bpf_sk_select_reuseport(ctx, reuseport_array, &key, flags) Did not run the program (not supported) OK #1052/p bpf_sk_select_reuseport(ctx, sockmap, &key, flags) Did not run the program (not supported) OK #1053/p bpf_sk_select_reuseport(ctx, sockhash, &key, flags) Did not run the program (not supported) OK #1054/p mark null check on return value of bpf_skc_to helpers OK #1055/u check valid spill/fill SKIP #1055/p check valid spill/fill OK #1056/u check valid spill/fill, skb mark SKIP #1056/p check valid spill/fill, skb mark OK #1057/u check valid spill/fill, ptr to mem SKIP #1057/p check valid spill/fill, ptr to mem OK #1058/u check with invalid reg offset 0 SKIP #1058/p check with invalid reg offset 0 OK #1059/u check corrupted spill/fill SKIP #1059/p check corrupted spill/fill OK #1060/u check corrupted spill/fill, LSB SKIP #1060/p check corrupted spill/fill, LSB OK #1061/u check corrupted spill/fill, MSB SKIP #1061/p check corrupted spill/fill, MSB OK #1062/p Spill and refill a u32 const scalar. Offset to skb->data OK #1063/p Spill a u32 const, refill from another half of the uninit u32 from the stack OK #1064/p Spill a u32 const scalar. Refill as u16. Offset to skb->data OK #1065/p Spill u32 const scalars. Refill as u64. Offset to skb->data OK #1066/p Spill a u32 const scalar. Refill as u16 from fp-6. Offset to skb->data OK #1067/p Spill and refill a u32 const scalar at non 8byte aligned stack addr. Offset to skb->data OK #1068/p Spill and refill a umax=40 bounded scalar. Offset to skb->data OK #1069/p Spill a u32 scalar at fp-4 and then at fp-8 OK #1070/u spin_lock: test1 success SKIP #1070/p spin_lock: test1 success OK #1071/u spin_lock: test2 direct ld/st SKIP #1071/p spin_lock: test2 direct ld/st OK #1072/u spin_lock: test3 direct ld/st SKIP #1072/p spin_lock: test3 direct ld/st OK #1073/u spin_lock: test4 direct ld/st SKIP #1073/p spin_lock: test4 direct ld/st OK #1074/u spin_lock: test5 call within a locked region SKIP #1074/p spin_lock: test5 call within a locked region OK #1075/u spin_lock: test6 missing unlock SKIP #1075/p spin_lock: test6 missing unlock OK #1076/u spin_lock: test7 unlock without lock SKIP #1076/p spin_lock: test7 unlock without lock OK #1077/u spin_lock: test8 double lock SKIP #1077/p spin_lock: test8 double lock OK #1078/u spin_lock: test9 different lock SKIP #1078/p spin_lock: test9 different lock OK #1079/u spin_lock: test10 lock in subprog without unlock SKIP #1079/p spin_lock: test10 lock in subprog without unlock OK #1080/p spin_lock: test11 ld_abs under lock OK #1081/u PTR_TO_STACK store/load SKIP #1081/p PTR_TO_STACK store/load OK #1082/u PTR_TO_STACK store/load - bad alignment on off SKIP #1082/p PTR_TO_STACK store/load - bad alignment on off OK #1083/u PTR_TO_STACK store/load - bad alignment on reg SKIP #1083/p PTR_TO_STACK store/load - bad alignment on reg OK #1084/u PTR_TO_STACK store/load - out of bounds low SKIP #1084/p PTR_TO_STACK store/load - out of bounds low OK #1085/u PTR_TO_STACK store/load - out of bounds high SKIP #1085/p PTR_TO_STACK store/load - out of bounds high OK #1086/u PTR_TO_STACK check high 1 SKIP #1086/p PTR_TO_STACK check high 1 OK #1087/u PTR_TO_STACK check high 2 SKIP #1087/p PTR_TO_STACK check high 2 OK #1088/u PTR_TO_STACK check high 3 SKIP #1088/p PTR_TO_STACK check high 3 OK #1089/u PTR_TO_STACK check high 4 SKIP #1089/p PTR_TO_STACK check high 4 OK #1090/u PTR_TO_STACK check high 5 SKIP #1090/p PTR_TO_STACK check high 5 OK #1091/u PTR_TO_STACK check high 6 SKIP #1091/p PTR_TO_STACK check high 6 OK #1092/u PTR_TO_STACK check high 7 SKIP #1092/p PTR_TO_STACK check high 7 OK #1093/u PTR_TO_STACK check low 1 SKIP #1093/p PTR_TO_STACK check low 1 OK #1094/u PTR_TO_STACK check low 2 SKIP #1094/p PTR_TO_STACK check low 2 OK #1095/u PTR_TO_STACK check low 3 SKIP #1095/p PTR_TO_STACK check low 3 OK #1096/u PTR_TO_STACK check low 4 SKIP #1096/p PTR_TO_STACK check low 4 OK #1097/u PTR_TO_STACK check low 5 SKIP #1097/p PTR_TO_STACK check low 5 OK #1098/u PTR_TO_STACK check low 6 SKIP #1098/p PTR_TO_STACK check low 6 OK #1099/u PTR_TO_STACK check low 7 SKIP #1099/p PTR_TO_STACK check low 7 OK #1100/u PTR_TO_STACK mixed reg/k, 1 SKIP #1100/p PTR_TO_STACK mixed reg/k, 1 OK #1101/u PTR_TO_STACK mixed reg/k, 2 SKIP #1101/p PTR_TO_STACK mixed reg/k, 2 OK #1102/u PTR_TO_STACK mixed reg/k, 3 SKIP #1102/p PTR_TO_STACK mixed reg/k, 3 OK #1103/u PTR_TO_STACK reg SKIP #1103/p PTR_TO_STACK reg OK #1104/u stack pointer arithmetic SKIP #1104/p stack pointer arithmetic OK #1105/p store PTR_TO_STACK in R10 to array map using BPF_B OK #1106/u add32 reg zero extend check SKIP #1106/p add32 reg zero extend check OK #1107/u add32 imm zero extend check SKIP #1107/p add32 imm zero extend check OK #1108/u sub32 reg zero extend check SKIP #1108/p sub32 reg zero extend check OK #1109/u sub32 imm zero extend check SKIP #1109/p sub32 imm zero extend check OK #1110/u mul32 reg zero extend check SKIP #1110/p mul32 reg zero extend check OK #1111/u mul32 imm zero extend check SKIP #1111/p mul32 imm zero extend check OK #1112/u div32 reg zero extend check SKIP #1112/p div32 reg zero extend check OK #1113/u div32 imm zero extend check SKIP #1113/p div32 imm zero extend check OK #1114/u or32 reg zero extend check SKIP #1114/p or32 reg zero extend check OK #1115/u or32 imm zero extend check SKIP #1115/p or32 imm zero extend check OK #1116/u and32 reg zero extend check SKIP #1116/p and32 reg zero extend check OK #1117/u and32 imm zero extend check SKIP #1117/p and32 imm zero extend check OK #1118/u lsh32 reg zero extend check SKIP #1118/p lsh32 reg zero extend check OK #1119/u lsh32 imm zero extend check SKIP #1119/p lsh32 imm zero extend check OK #1120/u rsh32 reg zero extend check SKIP #1120/p rsh32 reg zero extend check OK #1121/u rsh32 imm zero extend check SKIP #1121/p rsh32 imm zero extend check OK #1122/u neg32 reg zero extend check SKIP #1122/p neg32 reg zero extend check OK #1123/u mod32 reg zero extend check SKIP #1123/p mod32 reg zero extend check OK #1124/u mod32 imm zero extend check SKIP #1124/p mod32 imm zero extend check OK #1125/u xor32 reg zero extend check SKIP #1125/p xor32 reg zero extend check OK #1126/u xor32 imm zero extend check SKIP #1126/p xor32 imm zero extend check OK #1127/u mov32 reg zero extend check SKIP #1127/p mov32 reg zero extend check OK #1128/u mov32 imm zero extend check SKIP #1128/p mov32 imm zero extend check OK #1129/u arsh32 reg zero extend check SKIP #1129/p arsh32 reg zero extend check OK #1130/u arsh32 imm zero extend check SKIP #1130/p arsh32 imm zero extend check OK #1131/u end16 (to_le) reg zero extend check SKIP #1131/p end16 (to_le) reg zero extend check OK #1132/u end32 (to_le) reg zero extend check SKIP #1132/p end32 (to_le) reg zero extend check OK #1133/u end16 (to_be) reg zero extend check SKIP #1133/p end16 (to_be) reg zero extend check OK #1134/u end32 (to_be) reg zero extend check SKIP #1134/p end32 (to_be) reg zero extend check OK #1135/u ldx_b zero extend check SKIP #1135/p ldx_b zero extend check OK #1136/u ldx_h zero extend check SKIP #1136/p ldx_h zero extend check OK #1137/u ldx_w zero extend check SKIP #1137/p ldx_w zero extend check OK #1138/u read uninitialized register SKIP #1138/p read uninitialized register OK #1139/u read invalid register SKIP #1139/p read invalid register OK #1140/u program doesn't init R0 before exit SKIP #1140/p program doesn't init R0 before exit OK #1141/u program doesn't init R0 before exit in all branches SKIP #1141/p program doesn't init R0 before exit in all branches OK #1142/u unpriv: return pointer SKIP #1142/p unpriv: return pointer OK #1143/u unpriv: add const to pointer SKIP #1143/p unpriv: add const to pointer OK #1144/u unpriv: add pointer to pointer SKIP #1144/p unpriv: add pointer to pointer OK #1145/u unpriv: neg pointer SKIP #1145/p unpriv: neg pointer OK #1146/u unpriv: cmp pointer with const SKIP #1146/p unpriv: cmp pointer with const OK #1147/u unpriv: cmp pointer with pointer SKIP #1147/p unpriv: cmp pointer with pointer OK #1148/p unpriv: check that printk is disallowed Did not run the program (not supported) OK #1149/u unpriv: pass pointer to helper function SKIP #1149/p unpriv: pass pointer to helper function OK #1150/u unpriv: indirectly pass pointer on stack to helper function SKIP #1150/p unpriv: indirectly pass pointer on stack to helper function OK #1151/u unpriv: mangle pointer on stack 1 SKIP #1151/p unpriv: mangle pointer on stack 1 OK #1152/u unpriv: mangle pointer on stack 2 SKIP #1152/p unpriv: mangle pointer on stack 2 OK #1153/u unpriv: read pointer from stack in small chunks SKIP #1153/p unpriv: read pointer from stack in small chunks OK #1154/u unpriv: write pointer into ctx SKIP #1154/p unpriv: write pointer into ctx OK #1155/u unpriv: spill/fill of ctx SKIP #1155/p unpriv: spill/fill of ctx OK #1156/p unpriv: spill/fill of ctx 2 OK #1157/p unpriv: spill/fill of ctx 3 OK #1158/p unpriv: spill/fill of ctx 4 OK #1159/p unpriv: spill/fill of different pointers stx OK #1160/p unpriv: spill/fill of different pointers stx - ctx and sock OK #1161/p unpriv: spill/fill of different pointers stx - leak sock OK #1162/p unpriv: spill/fill of different pointers stx - sock and ctx (read) OK #1163/p unpriv: spill/fill of different pointers stx - sock and ctx (write) OK #1164/p unpriv: spill/fill of different pointers ldx OK #1165/u unpriv: write pointer into map elem value SKIP #1165/p unpriv: write pointer into map elem value OK #1166/u alu32: mov u32 const SKIP #1166/p alu32: mov u32 const OK #1167/u unpriv: partial copy of pointer SKIP #1167/p unpriv: partial copy of pointer OK #1168/u unpriv: pass pointer to tail_call SKIP #1168/p unpriv: pass pointer to tail_call OK #1169/u unpriv: cmp map pointer with zero SKIP #1169/p unpriv: cmp map pointer with zero OK #1170/u unpriv: write into frame pointer SKIP #1170/p unpriv: write into frame pointer OK #1171/u unpriv: spill/fill frame pointer SKIP #1171/p unpriv: spill/fill frame pointer OK #1172/u unpriv: cmp of frame pointer SKIP #1172/p unpriv: cmp of frame pointer OK #1173/u unpriv: adding of fp, reg SKIP #1173/p unpriv: adding of fp, reg OK #1174/u unpriv: adding of fp, imm SKIP #1174/p unpriv: adding of fp, imm OK #1175/u unpriv: cmp of stack pointer SKIP #1175/p unpriv: cmp of stack pointer OK #1176/u map element value is preserved across register spilling SKIP #1176/p map element value is preserved across register spilling OK #1177/u map element value or null is marked on register spilling SKIP #1177/p map element value or null is marked on register spilling OK #1178/u map element value store of cleared call register SKIP #1178/p map element value store of cleared call register OK #1179/u map element value with unaligned store SKIP #1179/p map element value with unaligned store OK #1180/u map element value with unaligned load SKIP #1180/p map element value with unaligned load OK #1181/u map element value is preserved across register spilling SKIP #1181/p map element value is preserved across register spilling OK #1182/u map element value illegal alu op, 1 SKIP #1182/p map element value illegal alu op, 1 OK #1183/u map element value illegal alu op, 2 SKIP #1183/p map element value illegal alu op, 2 OK #1184/u map element value illegal alu op, 3 SKIP #1184/p map element value illegal alu op, 3 OK #1185/u map element value illegal alu op, 4 SKIP #1185/p map element value illegal alu op, 4 OK #1186/u map element value illegal alu op, 5 SKIP #1186/p map element value illegal alu op, 5 OK #1187/p multiple registers share map_lookup_elem result OK #1188/p alu ops on ptr_to_map_value_or_null, 1 OK #1189/p alu ops on ptr_to_map_value_or_null, 2 OK #1190/p alu ops on ptr_to_map_value_or_null, 3 OK #1191/p invalid memory access with multiple map_lookup_elem calls OK #1192/p valid indirect map_lookup_elem access with 2nd lookup in branch OK #1193/u invalid map access from else condition SKIP #1193/p invalid map access from else condition OK #1194/p map lookup and null branch prediction OK #1195/u map access: known scalar += value_ptr unknown vs const SKIP #1195/p map access: known scalar += value_ptr unknown vs const OK #1196/u map access: known scalar += value_ptr const vs unknown SKIP #1196/p map access: known scalar += value_ptr const vs unknown OK #1197/u map access: known scalar += value_ptr const vs const (ne) SKIP #1197/p map access: known scalar += value_ptr const vs const (ne) OK #1198/u map access: known scalar += value_ptr const vs const (eq) SKIP #1198/p map access: known scalar += value_ptr const vs const (eq) OK #1199/u map access: known scalar += value_ptr unknown vs unknown (eq) SKIP #1199/p map access: known scalar += value_ptr unknown vs unknown (eq) OK #1200/u map access: known scalar += value_ptr unknown vs unknown (lt) SKIP #1200/p map access: known scalar += value_ptr unknown vs unknown (lt) OK #1201/u map access: known scalar += value_ptr unknown vs unknown (gt) SKIP #1201/p map access: known scalar += value_ptr unknown vs unknown (gt) OK #1202/u map access: known scalar += value_ptr from different maps SKIP #1202/p map access: known scalar += value_ptr from different maps OK #1203/u map access: value_ptr -= known scalar from different maps SKIP #1203/p map access: value_ptr -= known scalar from different maps OK #1204/u map access: known scalar += value_ptr from different maps, but same value properties SKIP #1204/p map access: known scalar += value_ptr from different maps, but same value properties OK #1205/u map access: mixing value pointer and scalar, 1 SKIP #1205/p map access: mixing value pointer and scalar, 1 OK #1206/u map access: mixing value pointer and scalar, 2 SKIP #1206/p map access: mixing value pointer and scalar, 2 OK #1207/u sanitation: alu with different scalars 1 SKIP #1207/p sanitation: alu with different scalars 1 OK #1208/u sanitation: alu with different scalars 2 SKIP #1208/p sanitation: alu with different scalars 2 OK #1209/u sanitation: alu with different scalars 3 SKIP #1209/p sanitation: alu with different scalars 3 OK #1210/u map access: value_ptr += known scalar, upper oob arith, test 1 SKIP #1210/p map access: value_ptr += known scalar, upper oob arith, test 1 OK #1211/u map access: value_ptr += known scalar, upper oob arith, test 2 SKIP #1211/p map access: value_ptr += known scalar, upper oob arith, test 2 OK #1212/u map access: value_ptr += known scalar, upper oob arith, test 3 SKIP #1212/p map access: value_ptr += known scalar, upper oob arith, test 3 OK #1213/u map access: value_ptr -= known scalar, lower oob arith, test 1 SKIP #1213/p map access: value_ptr -= known scalar, lower oob arith, test 1 OK #1214/u map access: value_ptr -= known scalar, lower oob arith, test 2 SKIP #1214/p map access: value_ptr -= known scalar, lower oob arith, test 2 OK #1215/u map access: value_ptr -= known scalar, lower oob arith, test 3 SKIP #1215/p map access: value_ptr -= known scalar, lower oob arith, test 3 OK #1216/u map access: known scalar += value_ptr SKIP #1216/p map access: known scalar += value_ptr OK #1217/u map access: value_ptr += known scalar, 1 SKIP #1217/p map access: value_ptr += known scalar, 1 OK #1218/u map access: value_ptr += known scalar, 2 SKIP #1218/p map access: value_ptr += known scalar, 2 OK #1219/u map access: value_ptr += known scalar, 3 SKIP #1219/p map access: value_ptr += known scalar, 3 OK #1220/u map access: value_ptr += known scalar, 4 SKIP #1220/p map access: value_ptr += known scalar, 4 OK #1221/u map access: value_ptr += known scalar, 5 SKIP #1221/p map access: value_ptr += known scalar, 5 OK #1222/u map access: value_ptr += known scalar, 6 SKIP #1222/p map access: value_ptr += known scalar, 6 OK #1223/u map access: value_ptr += N, value_ptr -= N known scalar SKIP #1223/p map access: value_ptr += N, value_ptr -= N known scalar OK #1224/u map access: unknown scalar += value_ptr, 1 SKIP #1224/p map access: unknown scalar += value_ptr, 1 OK #1225/u map access: unknown scalar += value_ptr, 2 SKIP #1225/p map access: unknown scalar += value_ptr, 2 OK #1226/u map access: unknown scalar += value_ptr, 3 SKIP #1226/p map access: unknown scalar += value_ptr, 3 OK #1227/u map access: unknown scalar += value_ptr, 4 SKIP #1227/p map access: unknown scalar += value_ptr, 4 OK #1228/u map access: value_ptr += unknown scalar, 1 SKIP #1228/p map access: value_ptr += unknown scalar, 1 OK #1229/u map access: value_ptr += unknown scalar, 2 SKIP #1229/p map access: value_ptr += unknown scalar, 2 OK #1230/u map access: value_ptr += unknown scalar, 3 SKIP #1230/p map access: value_ptr += unknown scalar, 3 OK #1231/u map access: value_ptr += value_ptr SKIP #1231/p map access: value_ptr += value_ptr OK #1232/u map access: known scalar -= value_ptr SKIP #1232/p map access: known scalar -= value_ptr OK #1233/u map access: value_ptr -= known scalar SKIP #1233/p map access: value_ptr -= known scalar OK #1234/u map access: value_ptr -= known scalar, 2 SKIP #1234/p map access: value_ptr -= known scalar, 2 OK #1235/u map access: unknown scalar -= value_ptr SKIP #1235/p map access: unknown scalar -= value_ptr OK #1236/u map access: value_ptr -= unknown scalar SKIP #1236/p map access: value_ptr -= unknown scalar OK #1237/u map access: value_ptr -= unknown scalar, 2 SKIP #1237/p map access: value_ptr -= unknown scalar, 2 OK #1238/u map access: value_ptr -= value_ptr SKIP #1238/p map access: value_ptr -= value_ptr OK #1239/u map access: trying to leak tainted dst reg SKIP #1239/p map access: trying to leak tainted dst reg OK #1240/p 32bit pkt_ptr -= scalar OK #1241/p 32bit scalar -= pkt_ptr OK #1242/p variable-offset ctx access OK #1243/u variable-offset stack read, priv vs unpriv SKIP #1243/p variable-offset stack read, priv vs unpriv OK #1244/p variable-offset stack read, uninitialized OK #1245/u variable-offset stack write, priv vs unpriv SKIP #1245/p variable-offset stack write, priv vs unpriv OK #1246/u variable-offset stack write clobbers spilled regs SKIP #1246/p variable-offset stack write clobbers spilled regs OK #1247/p indirect variable-offset stack access, unbounded OK #1248/p indirect variable-offset stack access, max out of bound OK #1249/p indirect variable-offset stack access, min out of bound OK #1250/p indirect variable-offset stack access, max_off+size > max_initialized OK #1251/p indirect variable-offset stack access, min_off < min_initialized OK #1252/u indirect variable-offset stack access, priv vs unpriv SKIP #1252/p indirect variable-offset stack access, priv vs unpriv OK #1253/p indirect variable-offset stack access, uninitialized OK #1254/p indirect variable-offset stack access, ok OK #1255/p wide store to bpf_sock_addr.user_ip6[0] Did not run the program (not supported) OK #1256/p wide store to bpf_sock_addr.user_ip6[1] OK #1257/p wide store to bpf_sock_addr.user_ip6[2] Did not run the program (not supported) OK #1258/p wide store to bpf_sock_addr.user_ip6[3] OK #1259/p wide store to bpf_sock_addr.msg_src_ip6[0] OK #1260/p wide store to bpf_sock_addr.msg_src_ip6[1] Did not run the program (not supported) OK #1261/p wide store to bpf_sock_addr.msg_src_ip6[2] OK #1262/p wide store to bpf_sock_addr.msg_src_ip6[3] OK #1263/p wide load from bpf_sock_addr.user_ip6[0] Did not run the program (not supported) OK #1264/p wide load from bpf_sock_addr.user_ip6[1] OK #1265/p wide load from bpf_sock_addr.user_ip6[2] Did not run the program (not supported) OK #1266/p wide load from bpf_sock_addr.user_ip6[3] OK #1267/p wide load from bpf_sock_addr.msg_src_ip6[0] OK #1268/p wide load from bpf_sock_addr.msg_src_ip6[1] Did not run the program (not supported) OK #1269/p wide load from bpf_sock_addr.msg_src_ip6[2] OK #1270/p wide load from bpf_sock_addr.msg_src_ip6[3] OK #1271/p xadd/w check unaligned stack OK #1272/p xadd/w check unaligned map OK #1273/p xadd/w check unaligned pkt OK #1274/p xadd/w check whether src/dst got mangled, 1 OK #1275/p xadd/w check whether src/dst got mangled, 2 OK #1276/p XDP, using ifindex from netdev OK #1277/p XDP pkt read, pkt_end mangling, bad access 1 OK #1278/p XDP pkt read, pkt_end mangling, bad access 2 OK #1279/p XDP pkt read, pkt_data' > pkt_end, corner case, good access OK #1280/p XDP pkt read, pkt_data' > pkt_end, bad access 1 OK #1281/p XDP pkt read, pkt_data' > pkt_end, bad access 2 OK #1282/p XDP pkt read, pkt_data' > pkt_end, corner case +1, good access OK #1283/p XDP pkt read, pkt_data' > pkt_end, corner case -1, bad access OK #1284/p XDP pkt read, pkt_end > pkt_data', good access OK #1285/p XDP pkt read, pkt_end > pkt_data', corner case -1, bad access OK #1286/p XDP pkt read, pkt_end > pkt_data', bad access 2 OK #1287/p XDP pkt read, pkt_end > pkt_data', corner case, good access OK #1288/p XDP pkt read, pkt_end > pkt_data', corner case +1, good access OK #1289/p XDP pkt read, pkt_data' < pkt_end, good access OK #1290/p XDP pkt read, pkt_data' < pkt_end, corner case -1, bad access OK #1291/p XDP pkt read, pkt_data' < pkt_end, bad access 2 OK #1292/p XDP pkt read, pkt_data' < pkt_end, corner case, good access OK #1293/p XDP pkt read, pkt_data' < pkt_end, corner case +1, good access OK #1294/p XDP pkt read, pkt_end < pkt_data', corner case, good access OK #1295/p XDP pkt read, pkt_end < pkt_data', bad access 1 OK #1296/p XDP pkt read, pkt_end < pkt_data', bad access 2 OK #1297/p XDP pkt read, pkt_end < pkt_data', corner case +1, good access OK #1298/p XDP pkt read, pkt_end < pkt_data', corner case -1, bad access OK #1299/p XDP pkt read, pkt_data' >= pkt_end, good access OK #1300/p XDP pkt read, pkt_data' >= pkt_end, corner case -1, bad access OK #1301/p XDP pkt read, pkt_data' >= pkt_end, bad access 2 OK #1302/p XDP pkt read, pkt_data' >= pkt_end, corner case, good access OK #1303/p XDP pkt read, pkt_data' >= pkt_end, corner case +1, good access OK #1304/p XDP pkt read, pkt_end >= pkt_data', corner case, good access OK #1305/p XDP pkt read, pkt_end >= pkt_data', bad access 1 OK #1306/p XDP pkt read, pkt_end >= pkt_data', bad access 2 OK #1307/p XDP pkt read, pkt_end >= pkt_data', corner case +1, good access OK #1308/p XDP pkt read, pkt_end >= pkt_data', corner case -1, bad access OK #1309/p XDP pkt read, pkt_data' <= pkt_end, corner case, good access OK #1310/p XDP pkt read, pkt_data' <= pkt_end, bad access 1 OK #1311/p XDP pkt read, pkt_data' <= pkt_end, bad access 2 OK #1312/p XDP pkt read, pkt_data' <= pkt_end, corner case +1, good access OK #1313/p XDP pkt read, pkt_data' <= pkt_end, corner case -1, bad access OK #1314/p XDP pkt read, pkt_end <= pkt_data', good access OK #1315/p XDP pkt read, pkt_end <= pkt_data', corner case -1, bad access OK #1316/p XDP pkt read, pkt_end <= pkt_data', bad access 2 OK #1317/p XDP pkt read, pkt_end <= pkt_data', corner case, good access OK #1318/p XDP pkt read, pkt_end <= pkt_data', corner case +1, good access OK #1319/p XDP pkt read, pkt_meta' > pkt_data, corner case, good access OK #1320/p XDP pkt read, pkt_meta' > pkt_data, bad access 1 OK #1321/p XDP pkt read, pkt_meta' > pkt_data, bad access 2 OK #1322/p XDP pkt read, pkt_meta' > pkt_data, corner case +1, good access OK #1323/p XDP pkt read, pkt_meta' > pkt_data, corner case -1, bad access OK #1324/p XDP pkt read, pkt_data > pkt_meta', good access OK #1325/p XDP pkt read, pkt_data > pkt_meta', corner case -1, bad access OK #1326/p XDP pkt read, pkt_data > pkt_meta', bad access 2 OK #1327/p XDP pkt read, pkt_data > pkt_meta', corner case, good access OK #1328/p XDP pkt read, pkt_data > pkt_meta', corner case +1, good access OK #1329/p XDP pkt read, pkt_meta' < pkt_data, good access OK #1330/p XDP pkt read, pkt_meta' < pkt_data, corner case -1, bad access OK #1331/p XDP pkt read, pkt_meta' < pkt_data, bad access 2 OK #1332/p XDP pkt read, pkt_meta' < pkt_data, corner case, good access OK #1333/p XDP pkt read, pkt_meta' < pkt_data, corner case +1, good access OK #1334/p XDP pkt read, pkt_data < pkt_meta', corner case, good access OK #1335/p XDP pkt read, pkt_data < pkt_meta', bad access 1 OK #1336/p XDP pkt read, pkt_data < pkt_meta', bad access 2 OK #1337/p XDP pkt read, pkt_data < pkt_meta', corner case +1, good access OK #1338/p XDP pkt read, pkt_data < pkt_meta', corner case -1, bad access OK #1339/p XDP pkt read, pkt_meta' >= pkt_data, good access OK #1340/p XDP pkt read, pkt_meta' >= pkt_data, corner case -1, bad access OK #1341/p XDP pkt read, pkt_meta' >= pkt_data, bad access 2 OK #1342/p XDP pkt read, pkt_meta' >= pkt_data, corner case, good access OK #1343/p XDP pkt read, pkt_meta' >= pkt_data, corner case +1, good access OK #1344/p XDP pkt read, pkt_data >= pkt_meta', corner case, good access OK #1345/p XDP pkt read, pkt_data >= pkt_meta', bad access 1 OK #1346/p XDP pkt read, pkt_data >= pkt_meta', bad access 2 OK #1347/p XDP pkt read, pkt_data >= pkt_meta', corner case +1, good access OK #1348/p XDP pkt read, pkt_data >= pkt_meta', corner case -1, bad access OK #1349/p XDP pkt read, pkt_meta' <= pkt_data, corner case, good access OK #1350/p XDP pkt read, pkt_meta' <= pkt_data, bad access 1 OK #1351/p XDP pkt read, pkt_meta' <= pkt_data, bad access 2 OK #1352/p XDP pkt read, pkt_meta' <= pkt_data, corner case +1, good access OK #1353/p XDP pkt read, pkt_meta' <= pkt_data, corner case -1, bad access OK #1354/p XDP pkt read, pkt_data <= pkt_meta', good access OK #1355/p XDP pkt read, pkt_data <= pkt_meta', corner case -1, bad access OK #1356/p XDP pkt read, pkt_data <= pkt_meta', bad access 2 OK #1357/p XDP pkt read, pkt_data <= pkt_meta', corner case, good access OK #1358/p XDP pkt read, pkt_data <= pkt_meta', corner case +1, good access OK Summary: 1359 PASSED, 635 SKIPPED, 0 FAILED :: [ PASS ] :: Test '1..40 selftests: bpf:test_verifier [PASS]'