{
"jump test 1" ,
.insns = {
BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_1, -8 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -8 , 0 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -16 , 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -8 , 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -16 , 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -8 , 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -32 , 5 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_EXIT_INSN(),
},
.errstr_unpriv = "R1 pointer comparison" ,
.result_unpriv = REJECT,
.result = ACCEPT,
},
{
"jump test 2" ,
.insns = {
BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0 , 2 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -8 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 14 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1 , 2 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -16 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 11 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2 , 2 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -32 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 8 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3 , 2 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -40 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 5 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4 , 2 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -48 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5 , 1 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -56 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_EXIT_INSN(),
},
.errstr_unpriv = "R1 pointer comparison" ,
.result_unpriv = REJECT,
.result = ACCEPT,
},
{
"jump test 3" ,
.insns = {
BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0 , 3 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -8 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 19 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1 , 3 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -16 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -16 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 15 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2 , 3 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -32 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -32 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 11 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3 , 3 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -40 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -40 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 7 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4 , 3 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -48 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -48 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5 , 0 ),
BPF_ST_MEM(BPF_DW, BPF_REG_2, -56 , 0 ),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -56 ),
BPF_LD_MAP_FD(BPF_REG_1, 0 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 0 , 0 , BPF_FUNC_map_delete_elem),
BPF_EXIT_INSN(),
},
.fixup_map_hash_8b = { 24 },
.errstr_unpriv = "R1 pointer comparison" ,
.result_unpriv = REJECT,
.result = ACCEPT,
.retval = -ENOENT,
},
{
"jump test 4" ,
.insns = {
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0 ),
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_EXIT_INSN(),
},
.errstr_unpriv = "R1 pointer comparison" ,
.result_unpriv = REJECT,
.result = ACCEPT,
},
{
"jump test 5" ,
.insns = {
BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_MOV64_IMM(BPF_REG_0, 0 ),
BPF_EXIT_INSN(),
},
.errstr_unpriv = "R1 pointer comparison" ,
.result_unpriv = REJECT,
.result = ACCEPT,
},
{
"jump test 6" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_MOV64_IMM(BPF_REG_1, 2 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_MOV64_IMM(BPF_REG_0, 2 ),
BPF_EXIT_INSN(),
BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 0 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , -20 ),
},
.result = ACCEPT,
.retval = 2 ,
},
{
"jump test 7" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2 , 16 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , -20 ),
},
.result = ACCEPT,
.retval = 3 ,
},
{
"jump test 8" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_MOV64_IMM(BPF_REG_1, 2 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , -20 ),
},
.result = ACCEPT,
.retval = 3 ,
},
{
"jump/call test 9" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_JMP_IMM(BPF_JA, 0 , 0 , 2 ),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2 , 16 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 1 , 0 , -20 ),
BPF_EXIT_INSN(),
},
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
.result = REJECT,
.errstr = "jump out of range from insn 1 to 4" ,
},
{
"jump/call test 10" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 1 , 0 , 2 ),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2 , 16 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 1 , 0 , -20 ),
BPF_EXIT_INSN(),
},
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
.result = REJECT,
.errstr = "last insn is not an exit or jmp" ,
},
{
"jump/call test 11" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 1 , 0 , 4 ),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_MOV64_IMM(BPF_REG_0, 3 ),
BPF_EXIT_INSN(),
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2 , 26 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_MOV64_IMM(BPF_REG_0, 42 ),
BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0 , 1 , 0 , -31 ),
BPF_EXIT_INSN(),
},
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
.result = ACCEPT,
.retval = 3 ,
},
{
"jump & dead code elimination" ,
.insns = {
BPF_MOV64_IMM(BPF_REG_0, 1 ),
BPF_MOV64_IMM(BPF_REG_3, 0 ),
BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0 ),
BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0 ),
BPF_ALU64_IMM(BPF_OR, BPF_REG_3, 32767 ),
BPF_JMP_IMM(BPF_JSGE, BPF_REG_3, 0 , 1 ),
BPF_EXIT_INSN(),
BPF_JMP_IMM(BPF_JSLE, BPF_REG_3, 0 x8000, 1 ),
BPF_EXIT_INSN(),
BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -32767 ),
BPF_MOV64_IMM(BPF_REG_0, 2 ),
BPF_JMP_IMM(BPF_JLE, BPF_REG_3, 0 , 1 ),
BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
BPF_EXIT_INSN(),
},
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
.result = ACCEPT,
.retval = 2 ,
},
Messung V0.5 in Prozent C=96 H=89 G=92