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