1*4882a593Smuzhiyun { 2*4882a593Smuzhiyun "DIV32 by 0, zero check 1", 3*4882a593Smuzhiyun .insns = { 4*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 5*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 6*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 7*4882a593Smuzhiyun BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1), 8*4882a593Smuzhiyun BPF_EXIT_INSN(), 9*4882a593Smuzhiyun }, 10*4882a593Smuzhiyun .result = ACCEPT, 11*4882a593Smuzhiyun .retval = 42, 12*4882a593Smuzhiyun }, 13*4882a593Smuzhiyun { 14*4882a593Smuzhiyun "DIV32 by 0, zero check 2", 15*4882a593Smuzhiyun .insns = { 16*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 17*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL), 18*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 19*4882a593Smuzhiyun BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1), 20*4882a593Smuzhiyun BPF_EXIT_INSN(), 21*4882a593Smuzhiyun }, 22*4882a593Smuzhiyun .result = ACCEPT, 23*4882a593Smuzhiyun .retval = 42, 24*4882a593Smuzhiyun }, 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun "DIV64 by 0, zero check", 27*4882a593Smuzhiyun .insns = { 28*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 29*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 30*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 31*4882a593Smuzhiyun BPF_ALU64_REG(BPF_DIV, BPF_REG_2, BPF_REG_1), 32*4882a593Smuzhiyun BPF_EXIT_INSN(), 33*4882a593Smuzhiyun }, 34*4882a593Smuzhiyun .result = ACCEPT, 35*4882a593Smuzhiyun .retval = 42, 36*4882a593Smuzhiyun }, 37*4882a593Smuzhiyun { 38*4882a593Smuzhiyun "MOD32 by 0, zero check 1", 39*4882a593Smuzhiyun .insns = { 40*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 41*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 42*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 43*4882a593Smuzhiyun BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1), 44*4882a593Smuzhiyun BPF_EXIT_INSN(), 45*4882a593Smuzhiyun }, 46*4882a593Smuzhiyun .result = ACCEPT, 47*4882a593Smuzhiyun .retval = 42, 48*4882a593Smuzhiyun }, 49*4882a593Smuzhiyun { 50*4882a593Smuzhiyun "MOD32 by 0, zero check 2", 51*4882a593Smuzhiyun .insns = { 52*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 53*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL), 54*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 55*4882a593Smuzhiyun BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1), 56*4882a593Smuzhiyun BPF_EXIT_INSN(), 57*4882a593Smuzhiyun }, 58*4882a593Smuzhiyun .result = ACCEPT, 59*4882a593Smuzhiyun .retval = 42, 60*4882a593Smuzhiyun }, 61*4882a593Smuzhiyun { 62*4882a593Smuzhiyun "MOD64 by 0, zero check", 63*4882a593Smuzhiyun .insns = { 64*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 65*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 66*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 1), 67*4882a593Smuzhiyun BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_1), 68*4882a593Smuzhiyun BPF_EXIT_INSN(), 69*4882a593Smuzhiyun }, 70*4882a593Smuzhiyun .result = ACCEPT, 71*4882a593Smuzhiyun .retval = 42, 72*4882a593Smuzhiyun }, 73*4882a593Smuzhiyun { 74*4882a593Smuzhiyun "DIV32 by 0, zero check ok, cls", 75*4882a593Smuzhiyun .insns = { 76*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 77*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 2), 78*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 16), 79*4882a593Smuzhiyun BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1), 80*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, BPF_REG_2), 81*4882a593Smuzhiyun BPF_EXIT_INSN(), 82*4882a593Smuzhiyun }, 83*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 84*4882a593Smuzhiyun .result = ACCEPT, 85*4882a593Smuzhiyun .retval = 8, 86*4882a593Smuzhiyun }, 87*4882a593Smuzhiyun { 88*4882a593Smuzhiyun "DIV32 by 0, zero check 1, cls", 89*4882a593Smuzhiyun .insns = { 90*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 91*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 1), 92*4882a593Smuzhiyun BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1), 93*4882a593Smuzhiyun BPF_EXIT_INSN(), 94*4882a593Smuzhiyun }, 95*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 96*4882a593Smuzhiyun .result = ACCEPT, 97*4882a593Smuzhiyun .retval = 0, 98*4882a593Smuzhiyun }, 99*4882a593Smuzhiyun { 100*4882a593Smuzhiyun "DIV32 by 0, zero check 2, cls", 101*4882a593Smuzhiyun .insns = { 102*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL), 103*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 1), 104*4882a593Smuzhiyun BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1), 105*4882a593Smuzhiyun BPF_EXIT_INSN(), 106*4882a593Smuzhiyun }, 107*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 108*4882a593Smuzhiyun .result = ACCEPT, 109*4882a593Smuzhiyun .retval = 0, 110*4882a593Smuzhiyun }, 111*4882a593Smuzhiyun { 112*4882a593Smuzhiyun "DIV64 by 0, zero check, cls", 113*4882a593Smuzhiyun .insns = { 114*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 115*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 1), 116*4882a593Smuzhiyun BPF_ALU64_REG(BPF_DIV, BPF_REG_0, BPF_REG_1), 117*4882a593Smuzhiyun BPF_EXIT_INSN(), 118*4882a593Smuzhiyun }, 119*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 120*4882a593Smuzhiyun .result = ACCEPT, 121*4882a593Smuzhiyun .retval = 0, 122*4882a593Smuzhiyun }, 123*4882a593Smuzhiyun { 124*4882a593Smuzhiyun "MOD32 by 0, zero check ok, cls", 125*4882a593Smuzhiyun .insns = { 126*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 42), 127*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 3), 128*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_2, 5), 129*4882a593Smuzhiyun BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1), 130*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, BPF_REG_2), 131*4882a593Smuzhiyun BPF_EXIT_INSN(), 132*4882a593Smuzhiyun }, 133*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 134*4882a593Smuzhiyun .result = ACCEPT, 135*4882a593Smuzhiyun .retval = 2, 136*4882a593Smuzhiyun }, 137*4882a593Smuzhiyun { 138*4882a593Smuzhiyun "MOD32 by 0, zero check 1, cls", 139*4882a593Smuzhiyun .insns = { 140*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 141*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 1), 142*4882a593Smuzhiyun BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1), 143*4882a593Smuzhiyun BPF_EXIT_INSN(), 144*4882a593Smuzhiyun }, 145*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 146*4882a593Smuzhiyun .result = ACCEPT, 147*4882a593Smuzhiyun .retval = 1, 148*4882a593Smuzhiyun }, 149*4882a593Smuzhiyun { 150*4882a593Smuzhiyun "MOD32 by 0, zero check 2, cls", 151*4882a593Smuzhiyun .insns = { 152*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL), 153*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 1), 154*4882a593Smuzhiyun BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1), 155*4882a593Smuzhiyun BPF_EXIT_INSN(), 156*4882a593Smuzhiyun }, 157*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 158*4882a593Smuzhiyun .result = ACCEPT, 159*4882a593Smuzhiyun .retval = 1, 160*4882a593Smuzhiyun }, 161*4882a593Smuzhiyun { 162*4882a593Smuzhiyun "MOD64 by 0, zero check 1, cls", 163*4882a593Smuzhiyun .insns = { 164*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 165*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, 2), 166*4882a593Smuzhiyun BPF_ALU64_REG(BPF_MOD, BPF_REG_0, BPF_REG_1), 167*4882a593Smuzhiyun BPF_EXIT_INSN(), 168*4882a593Smuzhiyun }, 169*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 170*4882a593Smuzhiyun .result = ACCEPT, 171*4882a593Smuzhiyun .retval = 2, 172*4882a593Smuzhiyun }, 173*4882a593Smuzhiyun { 174*4882a593Smuzhiyun "MOD64 by 0, zero check 2, cls", 175*4882a593Smuzhiyun .insns = { 176*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_1, 0), 177*4882a593Smuzhiyun BPF_MOV32_IMM(BPF_REG_0, -1), 178*4882a593Smuzhiyun BPF_ALU64_REG(BPF_MOD, BPF_REG_0, BPF_REG_1), 179*4882a593Smuzhiyun BPF_EXIT_INSN(), 180*4882a593Smuzhiyun }, 181*4882a593Smuzhiyun .prog_type = BPF_PROG_TYPE_SCHED_CLS, 182*4882a593Smuzhiyun .result = ACCEPT, 183*4882a593Smuzhiyun .retval = -1, 184*4882a593Smuzhiyun }, 185