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