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),
11 BPF_JMP32_IMM(BPF_JSET
, BPF_REG_7
, 1, 1),
13 BPF_MOV64_IMM(BPF_REG_0
, 2),
16 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
21 .data64
= { 1ULL << 63, }
27 .data64
= { 1ULL << 63 | 1, }
30 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
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),
42 BPF_LD_IMM64(BPF_REG_8
, 0x8000000000000001),
43 BPF_JMP32_REG(BPF_JSET
, BPF_REG_7
, BPF_REG_8
, 1),
45 BPF_MOV64_IMM(BPF_REG_0
, 2),
48 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
53 .data64
= { 1ULL << 63, }
59 .data64
= { 1ULL << 63 | 1, }
62 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
65 "jset32: min/max deduction",
68 BPF_MOV64_IMM(BPF_REG_0
, 0),
69 BPF_JMP32_IMM(BPF_JSET
, BPF_REG_7
, 0x10, 1),
71 BPF_JMP32_IMM(BPF_JGE
, BPF_REG_7
, 0x10, 1),
72 BPF_LDX_MEM(BPF_B
, BPF_REG_8
, BPF_REG_9
, 0),
81 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
82 BPF_JMP32_IMM(BPF_JEQ
, BPF_REG_7
, -1, 1),
84 BPF_MOV64_IMM(BPF_REG_0
, 2),
87 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
98 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
104 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
105 BPF_LD_IMM64(BPF_REG_8
, 0x7000000000000001),
106 BPF_JMP32_REG(BPF_JEQ
, BPF_REG_7
, BPF_REG_8
, 1),
108 BPF_MOV64_IMM(BPF_REG_0
, 2),
111 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
122 .data64
= { 1ULL << 63 | 1, }
125 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
128 "jeq32: min/max deduction",
131 BPF_MOV64_IMM(BPF_REG_0
, 0),
132 BPF_JMP32_IMM(BPF_JEQ
, BPF_REG_7
, 0x10, 1),
134 BPF_JMP32_IMM(BPF_JSGE
, BPF_REG_7
, 0xf, 1),
135 BPF_LDX_MEM(BPF_B
, BPF_REG_8
, BPF_REG_9
, 0),
144 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
145 BPF_JMP32_IMM(BPF_JNE
, BPF_REG_7
, -1, 1),
147 BPF_MOV64_IMM(BPF_REG_0
, 2),
150 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
161 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
167 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
168 BPF_LD_IMM64(BPF_REG_8
, 0x8000000000000001),
169 BPF_JMP32_REG(BPF_JNE
, BPF_REG_7
, BPF_REG_8
, 1),
171 BPF_MOV64_IMM(BPF_REG_0
, 2),
174 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
185 .data64
= { 1ULL << 63 | 2, }
188 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
191 "jne32: min/max deduction",
194 BPF_MOV64_IMM(BPF_REG_0
, 0),
195 BPF_JMP32_IMM(BPF_JNE
, BPF_REG_7
, 0x10, 1),
196 BPF_JMP_IMM(BPF_JNE
, BPF_REG_7
, 0x10, 1),
198 BPF_LDX_MEM(BPF_B
, BPF_REG_8
, BPF_REG_9
, 0),
207 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
208 BPF_JMP32_IMM(BPF_JGE
, BPF_REG_7
, UINT_MAX
- 1, 1),
210 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
213 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
218 .data64
= { UINT_MAX
, }
221 .data64
= { UINT_MAX
- 1, }
227 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
233 BPF_LD_IMM64(BPF_REG_8
, UINT_MAX
| 1ULL << 32),
234 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
235 BPF_JMP32_REG(BPF_JGE
, BPF_REG_7
, BPF_REG_8
, 1),
237 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
240 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
245 .data64
= { UINT_MAX
, }
248 .data64
= { INT_MAX
, }
251 .data64
= { (UINT_MAX
- 1) | 2ULL << 32, }
254 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
257 "jge32: min/max deduction",
260 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
261 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
262 BPF_JMP32_REG(BPF_JGE
, BPF_REG_7
, BPF_REG_8
, 1),
264 BPF_JMP32_IMM(BPF_JGE
, BPF_REG_7
, 0x7ffffff0, 1),
265 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
275 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
276 BPF_JMP32_IMM(BPF_JGT
, BPF_REG_7
, UINT_MAX
- 1, 1),
278 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
281 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
286 .data64
= { UINT_MAX
, }
289 .data64
= { UINT_MAX
- 1, }
295 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
301 BPF_LD_IMM64(BPF_REG_8
, (UINT_MAX
- 1) | 1ULL << 32),
302 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
303 BPF_JMP32_REG(BPF_JGT
, BPF_REG_7
, BPF_REG_8
, 1),
305 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
308 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
313 .data64
= { UINT_MAX
, }
316 .data64
= { UINT_MAX
- 1, }
319 .data64
= { (UINT_MAX
- 1) | 2ULL << 32, }
322 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
325 "jgt32: min/max deduction",
328 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
329 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
330 BPF_JMP32_REG(BPF_JGT
, BPF_REG_7
, BPF_REG_8
, 1),
332 BPF_JMP_IMM(BPF_JGT
, BPF_REG_7
, 0x7ffffff0, 1),
333 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
343 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
344 BPF_JMP32_IMM(BPF_JLE
, BPF_REG_7
, INT_MAX
, 1),
346 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
349 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
354 .data64
= { INT_MAX
- 1, }
357 .data64
= { UINT_MAX
, }
360 .data64
= { INT_MAX
, }
363 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
369 BPF_LD_IMM64(BPF_REG_8
, (INT_MAX
- 1) | 2ULL << 32),
370 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
371 BPF_JMP32_REG(BPF_JLE
, BPF_REG_7
, BPF_REG_8
, 1),
373 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
376 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
381 .data64
= { INT_MAX
| 1ULL << 32, }
384 .data64
= { INT_MAX
- 2, }
387 .data64
= { UINT_MAX
, }
390 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
393 "jle32: min/max deduction",
396 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
397 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
398 BPF_JMP32_REG(BPF_JLE
, BPF_REG_7
, BPF_REG_8
, 1),
400 BPF_JMP32_IMM(BPF_JLE
, BPF_REG_7
, 0x7ffffff0, 1),
401 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
411 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
412 BPF_JMP32_IMM(BPF_JLT
, BPF_REG_7
, INT_MAX
, 1),
414 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
417 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
422 .data64
= { INT_MAX
, }
425 .data64
= { UINT_MAX
, }
428 .data64
= { INT_MAX
- 1, }
431 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
437 BPF_LD_IMM64(BPF_REG_8
, INT_MAX
| 2ULL << 32),
438 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
439 BPF_JMP32_REG(BPF_JLT
, BPF_REG_7
, BPF_REG_8
, 1),
441 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
444 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
449 .data64
= { INT_MAX
| 1ULL << 32, }
452 .data64
= { UINT_MAX
, }
455 .data64
= { (INT_MAX
- 1) | 3ULL << 32, }
458 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
461 "jlt32: min/max deduction",
464 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
465 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
466 BPF_JMP32_REG(BPF_JLT
, BPF_REG_7
, BPF_REG_8
, 1),
468 BPF_JMP_IMM(BPF_JSLT
, BPF_REG_7
, 0x7ffffff0, 1),
469 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
479 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
480 BPF_JMP32_IMM(BPF_JSGE
, BPF_REG_7
, -1, 1),
482 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
485 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
499 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
505 BPF_LD_IMM64(BPF_REG_8
, (__u32
)-1 | 2ULL << 32),
506 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
507 BPF_JMP32_REG(BPF_JSGE
, BPF_REG_7
, BPF_REG_8
, 1),
509 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
512 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
520 .data64
= { 0x7fffffff | 1ULL << 32, }
526 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
529 "jsge32: min/max deduction",
532 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
533 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
534 BPF_JMP32_REG(BPF_JSGE
, BPF_REG_7
, BPF_REG_8
, 1),
536 BPF_JMP_IMM(BPF_JSGE
, BPF_REG_7
, 0x7ffffff0, 1),
537 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
547 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
548 BPF_JMP32_IMM(BPF_JSGT
, BPF_REG_7
, -1, 1),
550 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
553 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
558 .data64
= { (__u32
)-2, }
567 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
573 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffffe | 1ULL << 32),
574 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
575 BPF_JMP32_REG(BPF_JSGT
, BPF_REG_7
, BPF_REG_8
, 1),
577 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
580 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
585 .data64
= { 0x7ffffffe, }
588 .data64
= { 0x1ffffffffULL
, }
591 .data64
= { 0x7fffffff, }
594 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
597 "jsgt32: min/max deduction",
600 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
601 BPF_LD_IMM64(BPF_REG_8
, (__u32
)(-2) | 1ULL << 32),
602 BPF_JMP32_REG(BPF_JSGT
, BPF_REG_7
, BPF_REG_8
, 1),
604 BPF_JMP_IMM(BPF_JSGT
, BPF_REG_7
, -2, 1),
605 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
615 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
616 BPF_JMP32_IMM(BPF_JSLE
, BPF_REG_7
, -1, 1),
618 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
621 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
626 .data64
= { (__u32
)-2, }
635 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
641 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffffe | 1ULL << 32),
642 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
643 BPF_JMP32_REG(BPF_JSLE
, BPF_REG_7
, BPF_REG_8
, 1),
645 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
648 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
653 .data64
= { 0x7ffffffe, }
656 .data64
= { (__u32
)-1, }
659 .data64
= { 0x7fffffff | 2ULL << 32, }
662 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
665 "jsle32: min/max deduction",
668 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
669 BPF_LD_IMM64(BPF_REG_8
, 0x7ffffff0 | 1ULL << 32),
670 BPF_JMP32_REG(BPF_JSLE
, BPF_REG_7
, BPF_REG_8
, 1),
672 BPF_JMP_IMM(BPF_JSLE
, BPF_REG_7
, 0x7ffffff0, 1),
673 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
683 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
684 BPF_JMP32_IMM(BPF_JSLT
, BPF_REG_7
, -1, 1),
686 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
689 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
694 .data64
= { (__u32
)-2, }
703 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
709 BPF_LD_IMM64(BPF_REG_8
, 0x7fffffff | 1ULL << 32),
710 BPF_LDX_MEM(BPF_DW
, BPF_REG_7
, BPF_REG_2
, 0),
711 BPF_JMP32_REG(BPF_JSLT
, BPF_REG_7
, BPF_REG_8
, 1),
713 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
716 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
721 .data64
= { 0x7ffffffe, }
724 .data64
= { 0xffffffff, }
727 .data64
= { 0x7fffffff | 2ULL << 32, }
730 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
733 "jslt32: min/max deduction",
736 BPF_ALU32_IMM(BPF_MOV
, BPF_REG_0
, 2),
737 BPF_LD_IMM64(BPF_REG_8
, (__u32
)(-1) | 1ULL << 32),
738 BPF_JMP32_REG(BPF_JSLT
, BPF_REG_7
, BPF_REG_8
, 1),
740 BPF_JMP32_IMM(BPF_JSLT
, BPF_REG_7
, -1, 1),
741 BPF_LDX_MEM(BPF_DW
, BPF_REG_0
, BPF_REG_0
, 0),
748 "jgt32: range bound deduction, reg op imm",
750 BPF_ST_MEM(BPF_DW
, BPF_REG_10
, -8, 0),
751 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_1
),
752 BPF_MOV64_REG(BPF_REG_2
, BPF_REG_10
),
753 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_2
, -8),
754 BPF_LD_MAP_FD(BPF_REG_1
, 0),
755 BPF_RAW_INSN(BPF_JMP
| BPF_CALL
, 0, 0, 0, BPF_FUNC_map_lookup_elem
),
756 BPF_JMP_IMM(BPF_JEQ
, BPF_REG_0
, 0, 9),
757 BPF_MOV64_REG(BPF_REG_1
, BPF_REG_8
),
758 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_0
),
759 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid
),
760 BPF_JMP32_IMM(BPF_JGT
, BPF_REG_0
, 1, 5),
761 BPF_MOV32_REG(BPF_REG_6
, BPF_REG_0
),
762 BPF_ALU64_IMM(BPF_LSH
, BPF_REG_6
, 32),
763 BPF_ALU64_IMM(BPF_RSH
, BPF_REG_6
, 32),
764 BPF_ALU64_REG(BPF_ADD
, BPF_REG_8
, BPF_REG_6
),
765 BPF_ST_MEM(BPF_B
, BPF_REG_8
, 0, 0),
766 BPF_MOV32_IMM(BPF_REG_0
, 0),
769 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
770 .fixup_map_hash_48b
= { 4 },
772 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
775 "jgt32: range bound deduction, reg1 op reg2, reg1 unknown",
777 BPF_ST_MEM(BPF_DW
, BPF_REG_10
, -8, 0),
778 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_1
),
779 BPF_MOV64_REG(BPF_REG_2
, BPF_REG_10
),
780 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_2
, -8),
781 BPF_LD_MAP_FD(BPF_REG_1
, 0),
782 BPF_RAW_INSN(BPF_JMP
| BPF_CALL
, 0, 0, 0, BPF_FUNC_map_lookup_elem
),
783 BPF_JMP_IMM(BPF_JEQ
, BPF_REG_0
, 0, 10),
784 BPF_MOV64_REG(BPF_REG_1
, BPF_REG_8
),
785 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_0
),
786 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid
),
787 BPF_MOV32_IMM(BPF_REG_2
, 1),
788 BPF_JMP32_REG(BPF_JGT
, BPF_REG_0
, BPF_REG_2
, 5),
789 BPF_MOV32_REG(BPF_REG_6
, BPF_REG_0
),
790 BPF_ALU64_IMM(BPF_LSH
, BPF_REG_6
, 32),
791 BPF_ALU64_IMM(BPF_RSH
, BPF_REG_6
, 32),
792 BPF_ALU64_REG(BPF_ADD
, BPF_REG_8
, BPF_REG_6
),
793 BPF_ST_MEM(BPF_B
, BPF_REG_8
, 0, 0),
794 BPF_MOV32_IMM(BPF_REG_0
, 0),
797 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
798 .fixup_map_hash_48b
= { 4 },
800 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,
803 "jle32: range bound deduction, reg1 op reg2, reg2 unknown",
805 BPF_ST_MEM(BPF_DW
, BPF_REG_10
, -8, 0),
806 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_1
),
807 BPF_MOV64_REG(BPF_REG_2
, BPF_REG_10
),
808 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_2
, -8),
809 BPF_LD_MAP_FD(BPF_REG_1
, 0),
810 BPF_RAW_INSN(BPF_JMP
| BPF_CALL
, 0, 0, 0, BPF_FUNC_map_lookup_elem
),
811 BPF_JMP_IMM(BPF_JEQ
, BPF_REG_0
, 0, 10),
812 BPF_MOV64_REG(BPF_REG_1
, BPF_REG_8
),
813 BPF_MOV64_REG(BPF_REG_8
, BPF_REG_0
),
814 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid
),
815 BPF_MOV32_IMM(BPF_REG_2
, 1),
816 BPF_JMP32_REG(BPF_JLE
, BPF_REG_2
, BPF_REG_0
, 5),
817 BPF_MOV32_REG(BPF_REG_6
, BPF_REG_0
),
818 BPF_ALU64_IMM(BPF_LSH
, BPF_REG_6
, 32),
819 BPF_ALU64_IMM(BPF_RSH
, BPF_REG_6
, 32),
820 BPF_ALU64_REG(BPF_ADD
, BPF_REG_8
, BPF_REG_6
),
821 BPF_ST_MEM(BPF_B
, BPF_REG_8
, 0, 0),
822 BPF_MOV32_IMM(BPF_REG_0
, 0),
825 .prog_type
= BPF_PROG_TYPE_SCHED_CLS
,
826 .fixup_map_hash_48b
= { 4 },
828 .flags
= F_NEEDS_EFFICIENT_UNALIGNED_ACCESS
,