1*4882a593Smuzhiyun { 2*4882a593Smuzhiyun "dead code: start", 3*4882a593Smuzhiyun .insns = { 4*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, 2), 5*4882a593Smuzhiyun BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0), 6*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, 2), 7*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 8*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4), 9*4882a593Smuzhiyun BPF_EXIT_INSN(), 10*4882a593Smuzhiyun }, 11*4882a593Smuzhiyun .errstr_unpriv = "R9 !read_ok", 12*4882a593Smuzhiyun .result_unpriv = REJECT, 13*4882a593Smuzhiyun .result = ACCEPT, 14*4882a593Smuzhiyun .retval = 7, 15*4882a593Smuzhiyun }, 16*4882a593Smuzhiyun { 17*4882a593Smuzhiyun "dead code: mid 1", 18*4882a593Smuzhiyun .insns = { 19*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 20*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1), 21*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0), 22*4882a593Smuzhiyun BPF_EXIT_INSN(), 23*4882a593Smuzhiyun }, 24*4882a593Smuzhiyun .result = ACCEPT, 25*4882a593Smuzhiyun .retval = 7, 26*4882a593Smuzhiyun }, 27*4882a593Smuzhiyun { 28*4882a593Smuzhiyun "dead code: mid 2", 29*4882a593Smuzhiyun .insns = { 30*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 31*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4), 32*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1), 33*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, 2), 34*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 35*4882a593Smuzhiyun BPF_EXIT_INSN(), 36*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 1), 37*4882a593Smuzhiyun BPF_EXIT_INSN(), 38*4882a593Smuzhiyun }, 39*4882a593Smuzhiyun .result = ACCEPT, 40*4882a593Smuzhiyun .retval = 1, 41*4882a593Smuzhiyun }, 42*4882a593Smuzhiyun { 43*4882a593Smuzhiyun "dead code: end 1", 44*4882a593Smuzhiyun .insns = { 45*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 46*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 47*4882a593Smuzhiyun BPF_EXIT_INSN(), 48*4882a593Smuzhiyun BPF_EXIT_INSN(), 49*4882a593Smuzhiyun }, 50*4882a593Smuzhiyun .result = ACCEPT, 51*4882a593Smuzhiyun .retval = 7, 52*4882a593Smuzhiyun }, 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun "dead code: end 2", 55*4882a593Smuzhiyun .insns = { 56*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 57*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 58*4882a593Smuzhiyun BPF_EXIT_INSN(), 59*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 12), 60*4882a593Smuzhiyun BPF_EXIT_INSN(), 61*4882a593Smuzhiyun }, 62*4882a593Smuzhiyun .result = ACCEPT, 63*4882a593Smuzhiyun .retval = 7, 64*4882a593Smuzhiyun }, 65*4882a593Smuzhiyun { 66*4882a593Smuzhiyun "dead code: end 3", 67*4882a593Smuzhiyun .insns = { 68*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 69*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 70*4882a593Smuzhiyun BPF_EXIT_INSN(), 71*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 72*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, 1), 73*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 12), 74*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, -5), 75*4882a593Smuzhiyun }, 76*4882a593Smuzhiyun .result = ACCEPT, 77*4882a593Smuzhiyun .retval = 7, 78*4882a593Smuzhiyun }, 79*4882a593Smuzhiyun { 80*4882a593Smuzhiyun "dead code: tail of main + func", 81*4882a593Smuzhiyun .insns = { 82*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 83*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 84*4882a593Smuzhiyun BPF_EXIT_INSN(), 85*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 86*4882a593Smuzhiyun BPF_EXIT_INSN(), 87*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 12), 88*4882a593Smuzhiyun BPF_EXIT_INSN(), 89*4882a593Smuzhiyun }, 90*4882a593Smuzhiyun .errstr_unpriv = "function calls to other bpf functions are allowed for", 91*4882a593Smuzhiyun .result_unpriv = REJECT, 92*4882a593Smuzhiyun .result = ACCEPT, 93*4882a593Smuzhiyun .retval = 7, 94*4882a593Smuzhiyun }, 95*4882a593Smuzhiyun { 96*4882a593Smuzhiyun "dead code: tail of main + two functions", 97*4882a593Smuzhiyun .insns = { 98*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 99*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 100*4882a593Smuzhiyun BPF_EXIT_INSN(), 101*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 102*4882a593Smuzhiyun BPF_EXIT_INSN(), 103*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 104*4882a593Smuzhiyun BPF_EXIT_INSN(), 105*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 12), 106*4882a593Smuzhiyun BPF_EXIT_INSN(), 107*4882a593Smuzhiyun }, 108*4882a593Smuzhiyun .errstr_unpriv = "function calls to other bpf functions are allowed for", 109*4882a593Smuzhiyun .result_unpriv = REJECT, 110*4882a593Smuzhiyun .result = ACCEPT, 111*4882a593Smuzhiyun .retval = 7, 112*4882a593Smuzhiyun }, 113*4882a593Smuzhiyun { 114*4882a593Smuzhiyun "dead code: function in the middle and mid of another func", 115*4882a593Smuzhiyun .insns = { 116*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 7), 117*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3), 118*4882a593Smuzhiyun BPF_EXIT_INSN(), 119*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 12), 120*4882a593Smuzhiyun BPF_EXIT_INSN(), 121*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 7), 122*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1), 123*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5), 124*4882a593Smuzhiyun BPF_EXIT_INSN(), 125*4882a593Smuzhiyun }, 126*4882a593Smuzhiyun .errstr_unpriv = "function calls to other bpf functions are allowed for", 127*4882a593Smuzhiyun .result_unpriv = REJECT, 128*4882a593Smuzhiyun .result = ACCEPT, 129*4882a593Smuzhiyun .retval = 7, 130*4882a593Smuzhiyun }, 131*4882a593Smuzhiyun { 132*4882a593Smuzhiyun "dead code: middle of main before call", 133*4882a593Smuzhiyun .insns = { 134*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 2), 135*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1), 136*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 5), 137*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 138*4882a593Smuzhiyun BPF_EXIT_INSN(), 139*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 140*4882a593Smuzhiyun BPF_EXIT_INSN(), 141*4882a593Smuzhiyun }, 142*4882a593Smuzhiyun .errstr_unpriv = "function calls to other bpf functions are allowed for", 143*4882a593Smuzhiyun .result_unpriv = REJECT, 144*4882a593Smuzhiyun .result = ACCEPT, 145*4882a593Smuzhiyun .retval = 2, 146*4882a593Smuzhiyun }, 147*4882a593Smuzhiyun { 148*4882a593Smuzhiyun "dead code: start of a function", 149*4882a593Smuzhiyun .insns = { 150*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 2), 151*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 152*4882a593Smuzhiyun BPF_EXIT_INSN(), 153*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JA, 0, 0, 0), 154*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 155*4882a593Smuzhiyun BPF_EXIT_INSN(), 156*4882a593Smuzhiyun }, 157*4882a593Smuzhiyun .errstr_unpriv = "function calls to other bpf functions are allowed for", 158*4882a593Smuzhiyun .result_unpriv = REJECT, 159*4882a593Smuzhiyun .result = ACCEPT, 160*4882a593Smuzhiyun .retval = 2, 161*4882a593Smuzhiyun }, 162