0001 {
0002 "jump test 1",
0003 .insns = {
0004 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0005 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_1, -8),
0006 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
0007 BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
0008 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),
0009 BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 1),
0010 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 1),
0011 BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 2),
0012 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 1),
0013 BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 3),
0014 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 1),
0015 BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 4),
0016 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
0017 BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 5),
0018 BPF_MOV64_IMM(BPF_REG_0, 0),
0019 BPF_EXIT_INSN(),
0020 },
0021 .errstr_unpriv = "R1 pointer comparison",
0022 .result_unpriv = REJECT,
0023 .result = ACCEPT,
0024 },
0025 {
0026 "jump test 2",
0027 .insns = {
0028 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0029 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 2),
0030 BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
0031 BPF_JMP_IMM(BPF_JA, 0, 0, 14),
0032 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 2),
0033 BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
0034 BPF_JMP_IMM(BPF_JA, 0, 0, 11),
0035 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 2),
0036 BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
0037 BPF_JMP_IMM(BPF_JA, 0, 0, 8),
0038 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 2),
0039 BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
0040 BPF_JMP_IMM(BPF_JA, 0, 0, 5),
0041 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 2),
0042 BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
0043 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0044 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
0045 BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
0046 BPF_MOV64_IMM(BPF_REG_0, 0),
0047 BPF_EXIT_INSN(),
0048 },
0049 .errstr_unpriv = "R1 pointer comparison",
0050 .result_unpriv = REJECT,
0051 .result = ACCEPT,
0052 },
0053 {
0054 "jump test 3",
0055 .insns = {
0056 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0057 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
0058 BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
0059 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0060 BPF_JMP_IMM(BPF_JA, 0, 0, 19),
0061 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 3),
0062 BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
0063 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -16),
0064 BPF_JMP_IMM(BPF_JA, 0, 0, 15),
0065 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 3),
0066 BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
0067 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -32),
0068 BPF_JMP_IMM(BPF_JA, 0, 0, 11),
0069 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 3),
0070 BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
0071 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -40),
0072 BPF_JMP_IMM(BPF_JA, 0, 0, 7),
0073 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 3),
0074 BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
0075 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -48),
0076 BPF_JMP_IMM(BPF_JA, 0, 0, 3),
0077 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 0),
0078 BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
0079 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -56),
0080 BPF_LD_MAP_FD(BPF_REG_1, 0),
0081 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
0082 BPF_EXIT_INSN(),
0083 },
0084 .fixup_map_hash_8b = { 24 },
0085 .errstr_unpriv = "R1 pointer comparison",
0086 .result_unpriv = REJECT,
0087 .result = ACCEPT,
0088 .retval = -ENOENT,
0089 },
0090 {
0091 "jump test 4",
0092 .insns = {
0093 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0094 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0095 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0096 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0097 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0098 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0099 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0100 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0101 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0102 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0103 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0104 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0105 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0106 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0107 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0108 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0109 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0110 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0111 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0112 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0113 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0114 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0115 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0116 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0117 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0118 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0119 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0120 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0121 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0122 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0123 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0124 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0125 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
0126 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
0127 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
0128 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
0129 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
0130 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
0131 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
0132 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
0133 BPF_MOV64_IMM(BPF_REG_0, 0),
0134 BPF_EXIT_INSN(),
0135 },
0136 .errstr_unpriv = "R1 pointer comparison",
0137 .result_unpriv = REJECT,
0138 .result = ACCEPT,
0139 },
0140 {
0141 "jump test 5",
0142 .insns = {
0143 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0144 BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
0145 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
0146 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
0147 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0148 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
0149 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0150 BPF_MOV64_IMM(BPF_REG_0, 0),
0151 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
0152 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
0153 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0154 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
0155 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0156 BPF_MOV64_IMM(BPF_REG_0, 0),
0157 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
0158 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
0159 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0160 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
0161 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0162 BPF_MOV64_IMM(BPF_REG_0, 0),
0163 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
0164 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
0165 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0166 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
0167 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0168 BPF_MOV64_IMM(BPF_REG_0, 0),
0169 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
0170 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
0171 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0172 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
0173 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0174 BPF_MOV64_IMM(BPF_REG_0, 0),
0175 BPF_EXIT_INSN(),
0176 },
0177 .errstr_unpriv = "R1 pointer comparison",
0178 .result_unpriv = REJECT,
0179 .result = ACCEPT,
0180 },
0181 {
0182 "jump test 6",
0183 .insns = {
0184 BPF_MOV64_IMM(BPF_REG_0, 1),
0185 BPF_MOV64_IMM(BPF_REG_1, 2),
0186 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0187 BPF_MOV64_IMM(BPF_REG_0, 2),
0188 BPF_EXIT_INSN(),
0189 BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
0190 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0191 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0192 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0193 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0194 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0195 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0196 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0197 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0198 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0199 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0200 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0201 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0202 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0203 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0204 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0205 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0206 BPF_JMP_IMM(BPF_JA, 0, 0, -20),
0207 },
0208 .result = ACCEPT,
0209 .retval = 2,
0210 },
0211 {
0212 "jump test 7",
0213 .insns = {
0214 BPF_MOV64_IMM(BPF_REG_0, 1),
0215 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0216 BPF_MOV64_IMM(BPF_REG_0, 3),
0217 BPF_EXIT_INSN(),
0218 BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
0219 BPF_MOV64_IMM(BPF_REG_0, 42),
0220 BPF_MOV64_IMM(BPF_REG_0, 42),
0221 BPF_MOV64_IMM(BPF_REG_0, 42),
0222 BPF_MOV64_IMM(BPF_REG_0, 42),
0223 BPF_MOV64_IMM(BPF_REG_0, 42),
0224 BPF_MOV64_IMM(BPF_REG_0, 42),
0225 BPF_MOV64_IMM(BPF_REG_0, 42),
0226 BPF_MOV64_IMM(BPF_REG_0, 42),
0227 BPF_MOV64_IMM(BPF_REG_0, 42),
0228 BPF_MOV64_IMM(BPF_REG_0, 42),
0229 BPF_MOV64_IMM(BPF_REG_0, 42),
0230 BPF_MOV64_IMM(BPF_REG_0, 42),
0231 BPF_MOV64_IMM(BPF_REG_0, 42),
0232 BPF_MOV64_IMM(BPF_REG_0, 42),
0233 BPF_MOV64_IMM(BPF_REG_0, 42),
0234 BPF_MOV64_IMM(BPF_REG_0, 42),
0235 BPF_JMP_IMM(BPF_JA, 0, 0, -20),
0236 },
0237 .result = ACCEPT,
0238 .retval = 3,
0239 },
0240 {
0241 "jump test 8",
0242 .insns = {
0243 BPF_MOV64_IMM(BPF_REG_0, 1),
0244 BPF_MOV64_IMM(BPF_REG_1, 2),
0245 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0246 BPF_MOV64_IMM(BPF_REG_0, 3),
0247 BPF_EXIT_INSN(),
0248 BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
0249 BPF_MOV64_IMM(BPF_REG_0, 42),
0250 BPF_MOV64_IMM(BPF_REG_0, 42),
0251 BPF_MOV64_IMM(BPF_REG_0, 42),
0252 BPF_MOV64_IMM(BPF_REG_0, 42),
0253 BPF_MOV64_IMM(BPF_REG_0, 42),
0254 BPF_MOV64_IMM(BPF_REG_0, 42),
0255 BPF_MOV64_IMM(BPF_REG_0, 42),
0256 BPF_MOV64_IMM(BPF_REG_0, 42),
0257 BPF_MOV64_IMM(BPF_REG_0, 42),
0258 BPF_MOV64_IMM(BPF_REG_0, 42),
0259 BPF_MOV64_IMM(BPF_REG_0, 42),
0260 BPF_MOV64_IMM(BPF_REG_0, 42),
0261 BPF_MOV64_IMM(BPF_REG_0, 42),
0262 BPF_MOV64_IMM(BPF_REG_0, 42),
0263 BPF_MOV64_IMM(BPF_REG_0, 42),
0264 BPF_MOV64_IMM(BPF_REG_0, 42),
0265 BPF_JMP_IMM(BPF_JA, 0, 0, -20),
0266 },
0267 .result = ACCEPT,
0268 .retval = 3,
0269 },
0270 {
0271 "jump/call test 9",
0272 .insns = {
0273 BPF_MOV64_IMM(BPF_REG_0, 1),
0274 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0275 BPF_MOV64_IMM(BPF_REG_0, 3),
0276 BPF_EXIT_INSN(),
0277 BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
0278 BPF_MOV64_IMM(BPF_REG_0, 42),
0279 BPF_MOV64_IMM(BPF_REG_0, 42),
0280 BPF_MOV64_IMM(BPF_REG_0, 42),
0281 BPF_MOV64_IMM(BPF_REG_0, 42),
0282 BPF_MOV64_IMM(BPF_REG_0, 42),
0283 BPF_MOV64_IMM(BPF_REG_0, 42),
0284 BPF_MOV64_IMM(BPF_REG_0, 42),
0285 BPF_MOV64_IMM(BPF_REG_0, 42),
0286 BPF_MOV64_IMM(BPF_REG_0, 42),
0287 BPF_MOV64_IMM(BPF_REG_0, 42),
0288 BPF_MOV64_IMM(BPF_REG_0, 42),
0289 BPF_MOV64_IMM(BPF_REG_0, 42),
0290 BPF_MOV64_IMM(BPF_REG_0, 42),
0291 BPF_MOV64_IMM(BPF_REG_0, 42),
0292 BPF_MOV64_IMM(BPF_REG_0, 42),
0293 BPF_MOV64_IMM(BPF_REG_0, 42),
0294 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
0295 BPF_EXIT_INSN(),
0296 },
0297 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0298 .result = REJECT,
0299 .errstr = "jump out of range from insn 1 to 4",
0300 },
0301 {
0302 "jump/call test 10",
0303 .insns = {
0304 BPF_MOV64_IMM(BPF_REG_0, 1),
0305 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 2),
0306 BPF_MOV64_IMM(BPF_REG_0, 3),
0307 BPF_EXIT_INSN(),
0308 BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
0309 BPF_MOV64_IMM(BPF_REG_0, 42),
0310 BPF_MOV64_IMM(BPF_REG_0, 42),
0311 BPF_MOV64_IMM(BPF_REG_0, 42),
0312 BPF_MOV64_IMM(BPF_REG_0, 42),
0313 BPF_MOV64_IMM(BPF_REG_0, 42),
0314 BPF_MOV64_IMM(BPF_REG_0, 42),
0315 BPF_MOV64_IMM(BPF_REG_0, 42),
0316 BPF_MOV64_IMM(BPF_REG_0, 42),
0317 BPF_MOV64_IMM(BPF_REG_0, 42),
0318 BPF_MOV64_IMM(BPF_REG_0, 42),
0319 BPF_MOV64_IMM(BPF_REG_0, 42),
0320 BPF_MOV64_IMM(BPF_REG_0, 42),
0321 BPF_MOV64_IMM(BPF_REG_0, 42),
0322 BPF_MOV64_IMM(BPF_REG_0, 42),
0323 BPF_MOV64_IMM(BPF_REG_0, 42),
0324 BPF_MOV64_IMM(BPF_REG_0, 42),
0325 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
0326 BPF_EXIT_INSN(),
0327 },
0328 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0329 .result = REJECT,
0330 .errstr = "last insn is not an exit or jmp",
0331 },
0332 {
0333 "jump/call test 11",
0334 .insns = {
0335 BPF_MOV64_IMM(BPF_REG_0, 1),
0336 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 4),
0337 BPF_MOV64_IMM(BPF_REG_0, 3),
0338 BPF_EXIT_INSN(),
0339 BPF_MOV64_IMM(BPF_REG_0, 3),
0340 BPF_EXIT_INSN(),
0341 BPF_MOV64_IMM(BPF_REG_0, 1),
0342 BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 26),
0343 BPF_MOV64_IMM(BPF_REG_0, 42),
0344 BPF_MOV64_IMM(BPF_REG_0, 42),
0345 BPF_MOV64_IMM(BPF_REG_0, 42),
0346 BPF_MOV64_IMM(BPF_REG_0, 42),
0347 BPF_MOV64_IMM(BPF_REG_0, 42),
0348 BPF_MOV64_IMM(BPF_REG_0, 42),
0349 BPF_MOV64_IMM(BPF_REG_0, 42),
0350 BPF_MOV64_IMM(BPF_REG_0, 42),
0351 BPF_MOV64_IMM(BPF_REG_0, 42),
0352 BPF_MOV64_IMM(BPF_REG_0, 42),
0353 BPF_MOV64_IMM(BPF_REG_0, 42),
0354 BPF_MOV64_IMM(BPF_REG_0, 42),
0355 BPF_MOV64_IMM(BPF_REG_0, 42),
0356 BPF_MOV64_IMM(BPF_REG_0, 42),
0357 BPF_MOV64_IMM(BPF_REG_0, 42),
0358 BPF_MOV64_IMM(BPF_REG_0, 42),
0359 BPF_MOV64_IMM(BPF_REG_0, 42),
0360 BPF_MOV64_IMM(BPF_REG_0, 42),
0361 BPF_MOV64_IMM(BPF_REG_0, 42),
0362 BPF_MOV64_IMM(BPF_REG_0, 42),
0363 BPF_MOV64_IMM(BPF_REG_0, 42),
0364 BPF_MOV64_IMM(BPF_REG_0, 42),
0365 BPF_MOV64_IMM(BPF_REG_0, 42),
0366 BPF_MOV64_IMM(BPF_REG_0, 42),
0367 BPF_MOV64_IMM(BPF_REG_0, 42),
0368 BPF_MOV64_IMM(BPF_REG_0, 42),
0369 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -31),
0370 BPF_EXIT_INSN(),
0371 },
0372 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0373 .result = ACCEPT,
0374 .retval = 3,
0375 },
0376 {
0377 "jump & dead code elimination",
0378 .insns = {
0379 BPF_MOV64_IMM(BPF_REG_0, 1),
0380 BPF_MOV64_IMM(BPF_REG_3, 0),
0381 BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
0382 BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
0383 BPF_ALU64_IMM(BPF_OR, BPF_REG_3, 32767),
0384 BPF_JMP_IMM(BPF_JSGE, BPF_REG_3, 0, 1),
0385 BPF_EXIT_INSN(),
0386 BPF_JMP_IMM(BPF_JSLE, BPF_REG_3, 0x8000, 1),
0387 BPF_EXIT_INSN(),
0388 BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -32767),
0389 BPF_MOV64_IMM(BPF_REG_0, 2),
0390 BPF_JMP_IMM(BPF_JLE, BPF_REG_3, 0, 1),
0391 BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
0392 BPF_EXIT_INSN(),
0393 },
0394 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0395 .result = ACCEPT,
0396 .retval = 2,
0397 },