| { |
| "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, 0x8000, 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, |
| }, |