brintos

brintos / linux-shallow public Read only

0
0
Text · 20.3 KiB · 43776f6 Raw
896 lines · c
1{2	"jset32: BPF_K",3	.insns = {4	BPF_DIRECT_PKT_R2,5	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),6	/* reg, high bits shouldn't be tested */7	BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, -2, 1),8	BPF_JMP_IMM(BPF_JA, 0, 0, 1),9	BPF_EXIT_INSN(),10 11	BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 1, 1),12	BPF_EXIT_INSN(),13	BPF_MOV64_IMM(BPF_REG_0, 2),14	BPF_EXIT_INSN(),15	},16	.prog_type = BPF_PROG_TYPE_SCHED_CLS,17	.result = ACCEPT,18	.runs = 3,19	.retvals = {20		{ .retval = 0,21		  .data64 = { 1ULL << 63, }22		},23		{ .retval = 2,24		  .data64 = { 1, }25		},26		{ .retval = 2,27		  .data64 = { 1ULL << 63 | 1, }28		},29	},30	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,31},32{33	"jset32: BPF_X",34	.insns = {35	BPF_DIRECT_PKT_R2,36	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),37	BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000),38	BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),39	BPF_JMP_IMM(BPF_JA, 0, 0, 1),40	BPF_EXIT_INSN(),41 42	BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),43	BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),44	BPF_EXIT_INSN(),45	BPF_MOV64_IMM(BPF_REG_0, 2),46	BPF_EXIT_INSN(),47	},48	.prog_type = BPF_PROG_TYPE_SCHED_CLS,49	.result = ACCEPT,50	.runs = 3,51	.retvals = {52		{ .retval = 0,53		  .data64 = { 1ULL << 63, }54		},55		{ .retval = 2,56		  .data64 = { 1, }57		},58		{ .retval = 2,59		  .data64 = { 1ULL << 63 | 1, }60		},61	},62	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,63},64{65	"jset32: ignores upper bits",66	.insns = {67	BPF_MOV64_IMM(BPF_REG_0, 0),68	BPF_LD_IMM64(BPF_REG_7, 0x8000000000000000),69	BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000),70	BPF_JMP_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),71	BPF_EXIT_INSN(),72	BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),73	BPF_MOV64_IMM(BPF_REG_0, 2),74	BPF_EXIT_INSN(),75	},76	.result = ACCEPT,77	.retval = 2,78},79{80	"jset32: min/max deduction",81	.insns = {82	BPF_RAND_UEXT_R7,83	BPF_MOV64_IMM(BPF_REG_0, 0),84	BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 0x10, 1),85	BPF_EXIT_INSN(),86	BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x10, 1),87	BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),88	BPF_EXIT_INSN(),89	},90	.errstr_unpriv = "R9 !read_ok",91	.result_unpriv = REJECT,92	.result = ACCEPT,93},94{95	"jeq32: BPF_K",96	.insns = {97	BPF_DIRECT_PKT_R2,98	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),99	BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, -1, 1),100	BPF_EXIT_INSN(),101	BPF_MOV64_IMM(BPF_REG_0, 2),102	BPF_EXIT_INSN(),103	},104	.prog_type = BPF_PROG_TYPE_SCHED_CLS,105	.result = ACCEPT,106	.runs = 2,107	.retvals = {108		{ .retval = 0,109		  .data64 = { -2, }110		},111		{ .retval = 2,112		  .data64 = { -1, }113		},114	},115	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,116},117{118	"jeq32: BPF_X",119	.insns = {120	BPF_DIRECT_PKT_R2,121	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),122	BPF_LD_IMM64(BPF_REG_8, 0x7000000000000001),123	BPF_JMP32_REG(BPF_JEQ, BPF_REG_7, BPF_REG_8, 1),124	BPF_EXIT_INSN(),125	BPF_MOV64_IMM(BPF_REG_0, 2),126	BPF_EXIT_INSN(),127	},128	.prog_type = BPF_PROG_TYPE_SCHED_CLS,129	.result = ACCEPT,130	.runs = 3,131	.retvals = {132		{ .retval = 0,133		  .data64 = { 2, }134		},135		{ .retval = 2,136		  .data64 = { 1, }137		},138		{ .retval = 2,139		  .data64 = { 1ULL << 63 | 1, }140		},141	},142	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,143},144{145	"jeq32: min/max deduction",146	.insns = {147	BPF_RAND_UEXT_R7,148	BPF_MOV64_IMM(BPF_REG_0, 0),149	BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, 0x10, 1),150	BPF_EXIT_INSN(),151	BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, 0xf, 1),152	BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),153	BPF_EXIT_INSN(),154	},155	.errstr_unpriv = "R9 !read_ok",156	.result_unpriv = REJECT,157	.result = ACCEPT,158},159{160	"jne32: BPF_K",161	.insns = {162	BPF_DIRECT_PKT_R2,163	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),164	BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, -1, 1),165	BPF_EXIT_INSN(),166	BPF_MOV64_IMM(BPF_REG_0, 2),167	BPF_EXIT_INSN(),168	},169	.prog_type = BPF_PROG_TYPE_SCHED_CLS,170	.result = ACCEPT,171	.runs = 2,172	.retvals = {173		{ .retval = 2,174		  .data64 = { 1, }175		},176		{ .retval = 0,177		  .data64 = { -1, }178		},179	},180	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,181},182{183	"jne32: BPF_X",184	.insns = {185	BPF_DIRECT_PKT_R2,186	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),187	BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),188	BPF_JMP32_REG(BPF_JNE, BPF_REG_7, BPF_REG_8, 1),189	BPF_EXIT_INSN(),190	BPF_MOV64_IMM(BPF_REG_0, 2),191	BPF_EXIT_INSN(),192	},193	.prog_type = BPF_PROG_TYPE_SCHED_CLS,194	.result = ACCEPT,195	.runs = 3,196	.retvals = {197		{ .retval = 0,198		  .data64 = { 1, }199		},200		{ .retval = 2,201		  .data64 = { 2, }202		},203		{ .retval = 2,204		  .data64 = { 1ULL << 63 | 2, }205		},206	},207	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,208},209{210	"jne32: min/max deduction",211	.insns = {212	BPF_RAND_UEXT_R7,213	BPF_MOV64_IMM(BPF_REG_0, 0),214	BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),215	BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),216	BPF_EXIT_INSN(),217	BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),218	BPF_EXIT_INSN(),219	},220	.errstr_unpriv = "R9 !read_ok",221	.result_unpriv = REJECT,222	.result = ACCEPT,223},224{225	"jge32: BPF_K",226	.insns = {227	BPF_DIRECT_PKT_R2,228	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),229	BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, UINT_MAX - 1, 1),230	BPF_EXIT_INSN(),231	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),232	BPF_EXIT_INSN(),233	},234	.prog_type = BPF_PROG_TYPE_SCHED_CLS,235	.result = ACCEPT,236	.runs = 3,237	.retvals = {238		{ .retval = 2,239		  .data64 = { UINT_MAX, }240		},241		{ .retval = 2,242		  .data64 = { UINT_MAX - 1, }243		},244		{ .retval = 0,245		  .data64 = { 0, }246		},247	},248	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,249},250{251	"jge32: BPF_X",252	.insns = {253	BPF_DIRECT_PKT_R2,254	BPF_LD_IMM64(BPF_REG_8, UINT_MAX | 1ULL << 32),255	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),256	BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),257	BPF_EXIT_INSN(),258	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),259	BPF_EXIT_INSN(),260	},261	.prog_type = BPF_PROG_TYPE_SCHED_CLS,262	.result = ACCEPT,263	.runs = 3,264	.retvals = {265		{ .retval = 2,266		  .data64 = { UINT_MAX, }267		},268		{ .retval = 0,269		  .data64 = { INT_MAX, }270		},271		{ .retval = 0,272		  .data64 = { (UINT_MAX - 1) | 2ULL << 32, }273		},274	},275	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,276},277{278	"jge32: min/max deduction",279	.insns = {280	BPF_RAND_UEXT_R7,281	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),282	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),283	BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),284	BPF_EXIT_INSN(),285	BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x7ffffff0, 1),286	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),287	BPF_EXIT_INSN(),288	},289	.errstr_unpriv = "R0 invalid mem access 'scalar'",290	.result_unpriv = REJECT,291	.result = ACCEPT,292	.retval = 2,293	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,294},295{296	"jgt32: BPF_K",297	.insns = {298	BPF_DIRECT_PKT_R2,299	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),300	BPF_JMP32_IMM(BPF_JGT, BPF_REG_7, UINT_MAX - 1, 1),301	BPF_EXIT_INSN(),302	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),303	BPF_EXIT_INSN(),304	},305	.prog_type = BPF_PROG_TYPE_SCHED_CLS,306	.result = ACCEPT,307	.runs = 3,308	.retvals = {309		{ .retval = 2,310		  .data64 = { UINT_MAX, }311		},312		{ .retval = 0,313		  .data64 = { UINT_MAX - 1, }314		},315		{ .retval = 0,316		  .data64 = { 0, }317		},318	},319	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,320},321{322	"jgt32: BPF_X",323	.insns = {324	BPF_DIRECT_PKT_R2,325	BPF_LD_IMM64(BPF_REG_8, (UINT_MAX - 1) | 1ULL << 32),326	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),327	BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),328	BPF_EXIT_INSN(),329	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),330	BPF_EXIT_INSN(),331	},332	.prog_type = BPF_PROG_TYPE_SCHED_CLS,333	.result = ACCEPT,334	.runs = 3,335	.retvals = {336		{ .retval = 2,337		  .data64 = { UINT_MAX, }338		},339		{ .retval = 0,340		  .data64 = { UINT_MAX - 1, }341		},342		{ .retval = 0,343		  .data64 = { (UINT_MAX - 1) | 2ULL << 32, }344		},345	},346	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,347},348{349	"jgt32: min/max deduction",350	.insns = {351	BPF_RAND_UEXT_R7,352	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),353	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),354	BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),355	BPF_EXIT_INSN(),356	BPF_JMP_IMM(BPF_JGT, BPF_REG_7, 0x7ffffff0, 1),357	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),358	BPF_EXIT_INSN(),359	},360	.errstr_unpriv = "R0 invalid mem access 'scalar'",361	.result_unpriv = REJECT,362	.result = ACCEPT,363	.retval = 2,364	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,365},366{367	"jle32: BPF_K",368	.insns = {369	BPF_DIRECT_PKT_R2,370	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),371	BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, INT_MAX, 1),372	BPF_EXIT_INSN(),373	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),374	BPF_EXIT_INSN(),375	},376	.prog_type = BPF_PROG_TYPE_SCHED_CLS,377	.result = ACCEPT,378	.runs = 3,379	.retvals = {380		{ .retval = 2,381		  .data64 = { INT_MAX - 1, }382		},383		{ .retval = 0,384		  .data64 = { UINT_MAX, }385		},386		{ .retval = 2,387		  .data64 = { INT_MAX, }388		},389	},390	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,391},392{393	"jle32: BPF_X",394	.insns = {395	BPF_DIRECT_PKT_R2,396	BPF_LD_IMM64(BPF_REG_8, (INT_MAX - 1) | 2ULL << 32),397	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),398	BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),399	BPF_EXIT_INSN(),400	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),401	BPF_EXIT_INSN(),402	},403	.prog_type = BPF_PROG_TYPE_SCHED_CLS,404	.result = ACCEPT,405	.runs = 3,406	.retvals = {407		{ .retval = 0,408		  .data64 = { INT_MAX | 1ULL << 32, }409		},410		{ .retval = 2,411		  .data64 = { INT_MAX - 2, }412		},413		{ .retval = 0,414		  .data64 = { UINT_MAX, }415		},416	},417	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,418},419{420	"jle32: min/max deduction",421	.insns = {422	BPF_RAND_UEXT_R7,423	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),424	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),425	BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),426	BPF_EXIT_INSN(),427	BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, 0x7ffffff0, 1),428	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),429	BPF_EXIT_INSN(),430	},431	.errstr_unpriv = "R0 invalid mem access 'scalar'",432	.result_unpriv = REJECT,433	.result = ACCEPT,434	.retval = 2,435	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,436},437{438	"jlt32: BPF_K",439	.insns = {440	BPF_DIRECT_PKT_R2,441	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),442	BPF_JMP32_IMM(BPF_JLT, BPF_REG_7, INT_MAX, 1),443	BPF_EXIT_INSN(),444	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),445	BPF_EXIT_INSN(),446	},447	.prog_type = BPF_PROG_TYPE_SCHED_CLS,448	.result = ACCEPT,449	.runs = 3,450	.retvals = {451		{ .retval = 0,452		  .data64 = { INT_MAX, }453		},454		{ .retval = 0,455		  .data64 = { UINT_MAX, }456		},457		{ .retval = 2,458		  .data64 = { INT_MAX - 1, }459		},460	},461	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,462},463{464	"jlt32: BPF_X",465	.insns = {466	BPF_DIRECT_PKT_R2,467	BPF_LD_IMM64(BPF_REG_8, INT_MAX | 2ULL << 32),468	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),469	BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),470	BPF_EXIT_INSN(),471	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),472	BPF_EXIT_INSN(),473	},474	.prog_type = BPF_PROG_TYPE_SCHED_CLS,475	.result = ACCEPT,476	.runs = 3,477	.retvals = {478		{ .retval = 0,479		  .data64 = { INT_MAX | 1ULL << 32, }480		},481		{ .retval = 0,482		  .data64 = { UINT_MAX, }483		},484		{ .retval = 2,485		  .data64 = { (INT_MAX - 1) | 3ULL << 32, }486		},487	},488	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,489},490{491	"jlt32: min/max deduction",492	.insns = {493	BPF_RAND_UEXT_R7,494	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),495	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),496	BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),497	BPF_EXIT_INSN(),498	BPF_JMP_IMM(BPF_JSLT, BPF_REG_7, 0x7ffffff0, 1),499	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),500	BPF_EXIT_INSN(),501	},502	.errstr_unpriv = "R0 invalid mem access 'scalar'",503	.result_unpriv = REJECT,504	.result = ACCEPT,505	.retval = 2,506	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,507},508{509	"jsge32: BPF_K",510	.insns = {511	BPF_DIRECT_PKT_R2,512	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),513	BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, -1, 1),514	BPF_EXIT_INSN(),515	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),516	BPF_EXIT_INSN(),517	},518	.prog_type = BPF_PROG_TYPE_SCHED_CLS,519	.result = ACCEPT,520	.runs = 3,521	.retvals = {522		{ .retval = 2,523		  .data64 = { 0, }524		},525		{ .retval = 2,526		  .data64 = { -1, }527		},528		{ .retval = 0,529		  .data64 = { -2, }530		},531	},532	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,533},534{535	"jsge32: BPF_X",536	.insns = {537	BPF_DIRECT_PKT_R2,538	BPF_LD_IMM64(BPF_REG_8, (__u32)-1 | 2ULL << 32),539	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),540	BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),541	BPF_EXIT_INSN(),542	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),543	BPF_EXIT_INSN(),544	},545	.prog_type = BPF_PROG_TYPE_SCHED_CLS,546	.result = ACCEPT,547	.runs = 3,548	.retvals = {549		{ .retval = 2,550		  .data64 = { -1, }551		},552		{ .retval = 2,553		  .data64 = { 0x7fffffff | 1ULL << 32, }554		},555		{ .retval = 0,556		  .data64 = { -2, }557		},558	},559	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,560},561{562	"jsge32: min/max deduction",563	.insns = {564	BPF_RAND_UEXT_R7,565	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),566	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),567	BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),568	BPF_EXIT_INSN(),569	BPF_JMP_IMM(BPF_JSGE, BPF_REG_7, 0x7ffffff0, 1),570	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),571	BPF_EXIT_INSN(),572	},573	.errstr_unpriv = "R0 invalid mem access 'scalar'",574	.result_unpriv = REJECT,575	.result = ACCEPT,576	.retval = 2,577	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,578},579{580	"jsgt32: BPF_K",581	.insns = {582	BPF_DIRECT_PKT_R2,583	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),584	BPF_JMP32_IMM(BPF_JSGT, BPF_REG_7, -1, 1),585	BPF_EXIT_INSN(),586	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),587	BPF_EXIT_INSN(),588	},589	.prog_type = BPF_PROG_TYPE_SCHED_CLS,590	.result = ACCEPT,591	.runs = 3,592	.retvals = {593		{ .retval = 0,594		  .data64 = { (__u32)-2, }595		},596		{ .retval = 0,597		  .data64 = { -1, }598		},599		{ .retval = 2,600		  .data64 = { 1, }601		},602	},603	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,604},605{606	"jsgt32: BPF_X",607	.insns = {608	BPF_DIRECT_PKT_R2,609	BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),610	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),611	BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),612	BPF_EXIT_INSN(),613	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),614	BPF_EXIT_INSN(),615	},616	.prog_type = BPF_PROG_TYPE_SCHED_CLS,617	.result = ACCEPT,618	.runs = 3,619	.retvals = {620		{ .retval = 0,621		  .data64 = { 0x7ffffffe, }622		},623		{ .retval = 0,624		  .data64 = { 0x1ffffffffULL, }625		},626		{ .retval = 2,627		  .data64 = { 0x7fffffff, }628		},629	},630	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,631},632{633	"jsgt32: min/max deduction",634	.insns = {635	BPF_RAND_SEXT_R7,636	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),637	BPF_LD_IMM64(BPF_REG_8, (__u32)(-2) | 1ULL << 32),638	BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),639	BPF_EXIT_INSN(),640	BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, -2, 1),641	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),642	BPF_EXIT_INSN(),643	},644	.errstr_unpriv = "R0 invalid mem access 'scalar'",645	.result_unpriv = REJECT,646	.result = ACCEPT,647	.retval = 2,648	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,649},650{651	"jsle32: BPF_K",652	.insns = {653	BPF_DIRECT_PKT_R2,654	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),655	BPF_JMP32_IMM(BPF_JSLE, BPF_REG_7, -1, 1),656	BPF_EXIT_INSN(),657	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),658	BPF_EXIT_INSN(),659	},660	.prog_type = BPF_PROG_TYPE_SCHED_CLS,661	.result = ACCEPT,662	.runs = 3,663	.retvals = {664		{ .retval = 2,665		  .data64 = { (__u32)-2, }666		},667		{ .retval = 2,668		  .data64 = { -1, }669		},670		{ .retval = 0,671		  .data64 = { 1, }672		},673	},674	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,675},676{677	"jsle32: BPF_X",678	.insns = {679	BPF_DIRECT_PKT_R2,680	BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),681	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),682	BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),683	BPF_EXIT_INSN(),684	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),685	BPF_EXIT_INSN(),686	},687	.prog_type = BPF_PROG_TYPE_SCHED_CLS,688	.result = ACCEPT,689	.runs = 3,690	.retvals = {691		{ .retval = 2,692		  .data64 = { 0x7ffffffe, }693		},694		{ .retval = 2,695		  .data64 = { (__u32)-1, }696		},697		{ .retval = 0,698		  .data64 = { 0x7fffffff | 2ULL << 32, }699		},700	},701	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,702},703{704	"jsle32: min/max deduction",705	.insns = {706	BPF_RAND_UEXT_R7,707	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),708	BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),709	BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),710	BPF_EXIT_INSN(),711	BPF_JMP_IMM(BPF_JSLE, BPF_REG_7, 0x7ffffff0, 1),712	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),713	BPF_EXIT_INSN(),714	},715	.errstr_unpriv = "R0 invalid mem access 'scalar'",716	.result_unpriv = REJECT,717	.result = ACCEPT,718	.retval = 2,719	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,720},721{722	"jslt32: BPF_K",723	.insns = {724	BPF_DIRECT_PKT_R2,725	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),726	BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),727	BPF_EXIT_INSN(),728	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),729	BPF_EXIT_INSN(),730	},731	.prog_type = BPF_PROG_TYPE_SCHED_CLS,732	.result = ACCEPT,733	.runs = 3,734	.retvals = {735		{ .retval = 2,736		  .data64 = { (__u32)-2, }737		},738		{ .retval = 0,739		  .data64 = { -1, }740		},741		{ .retval = 0,742		  .data64 = { 1, }743		},744	},745	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,746},747{748	"jslt32: BPF_X",749	.insns = {750	BPF_DIRECT_PKT_R2,751	BPF_LD_IMM64(BPF_REG_8, 0x7fffffff | 1ULL << 32),752	BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),753	BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),754	BPF_EXIT_INSN(),755	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),756	BPF_EXIT_INSN(),757	},758	.prog_type = BPF_PROG_TYPE_SCHED_CLS,759	.result = ACCEPT,760	.runs = 3,761	.retvals = {762		{ .retval = 2,763		  .data64 = { 0x7ffffffe, }764		},765		{ .retval = 2,766		  .data64 = { 0xffffffff, }767		},768		{ .retval = 0,769		  .data64 = { 0x7fffffff | 2ULL << 32, }770		},771	},772	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,773},774{775	"jslt32: min/max deduction",776	.insns = {777	BPF_RAND_SEXT_R7,778	BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),779	BPF_LD_IMM64(BPF_REG_8, (__u32)(-1) | 1ULL << 32),780	BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),781	BPF_EXIT_INSN(),782	BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),783	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),784	BPF_EXIT_INSN(),785	},786	.errstr_unpriv = "R0 invalid mem access 'scalar'",787	.result_unpriv = REJECT,788	.result = ACCEPT,789	.retval = 2,790	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,791},792{793	"jgt32: range bound deduction, reg op imm",794	.insns = {795	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),796	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),797	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),798	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),799	BPF_LD_MAP_FD(BPF_REG_1, 0),800	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),801	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),802	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),803	BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),804	BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),805	BPF_JMP32_IMM(BPF_JGT, BPF_REG_0, 1, 5),806	BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),807	BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),808	BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),809	BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),810	BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),811	BPF_MOV32_IMM(BPF_REG_0, 0),812	BPF_EXIT_INSN(),813	},814	.prog_type = BPF_PROG_TYPE_SCHED_CLS,815	.fixup_map_hash_48b = { 4 },816	.result = ACCEPT,817	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,818},819{820	"jgt32: range bound deduction, reg1 op reg2, reg1 unknown",821	.insns = {822	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),823	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),824	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),825	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),826	BPF_LD_MAP_FD(BPF_REG_1, 0),827	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),828	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),829	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),830	BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),831	BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),832	BPF_MOV32_IMM(BPF_REG_2, 1),833	BPF_JMP32_REG(BPF_JGT, BPF_REG_0, BPF_REG_2, 5),834	BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),835	BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),836	BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),837	BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),838	BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),839	BPF_MOV32_IMM(BPF_REG_0, 0),840	BPF_EXIT_INSN(),841	},842	.prog_type = BPF_PROG_TYPE_SCHED_CLS,843	.fixup_map_hash_48b = { 4 },844	.result = ACCEPT,845	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,846},847{848	"jle32: range bound deduction, reg1 op reg2, reg2 unknown",849	.insns = {850	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),851	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),852	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),853	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),854	BPF_LD_MAP_FD(BPF_REG_1, 0),855	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),856	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),857	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),858	BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),859	BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),860	BPF_MOV32_IMM(BPF_REG_2, 1),861	BPF_JMP32_REG(BPF_JLE, BPF_REG_2, BPF_REG_0, 5),862	BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),863	BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),864	BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),865	BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),866	BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),867	BPF_MOV32_IMM(BPF_REG_0, 0),868	BPF_EXIT_INSN(),869	},870	.prog_type = BPF_PROG_TYPE_SCHED_CLS,871	.fixup_map_hash_48b = { 4 },872	.result = ACCEPT,873	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,874},875{876	"jeq32/jne32: bounds checking",877	.insns = {878	BPF_MOV64_IMM(BPF_REG_6, 563),879	BPF_MOV64_IMM(BPF_REG_2, 0),880	BPF_ALU64_IMM(BPF_NEG, BPF_REG_2, 0),881	BPF_ALU64_IMM(BPF_NEG, BPF_REG_2, 0),882	BPF_ALU32_REG(BPF_OR, BPF_REG_2, BPF_REG_6),883	BPF_JMP32_IMM(BPF_JNE, BPF_REG_2, 8, 5),884	BPF_JMP_IMM(BPF_JSGE, BPF_REG_2, 500, 2),885	BPF_MOV64_IMM(BPF_REG_0, 2),886	BPF_EXIT_INSN(),887	BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),888	BPF_EXIT_INSN(),889	BPF_MOV64_IMM(BPF_REG_0, 1),890	BPF_EXIT_INSN(),891	},892	.prog_type = BPF_PROG_TYPE_SCHED_CLS,893	.result = ACCEPT,894	.retval = 1,895},896