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