cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

jump.c (12184B)


      1{
      2	"jump test 1",
      3	.insns = {
      4	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
      5	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_1, -8),
      6	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
      7	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
      8	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),
      9	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 1),
     10	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 1),
     11	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 2),
     12	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 1),
     13	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 3),
     14	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 1),
     15	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 4),
     16	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
     17	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 5),
     18	BPF_MOV64_IMM(BPF_REG_0, 0),
     19	BPF_EXIT_INSN(),
     20	},
     21	.errstr_unpriv = "R1 pointer comparison",
     22	.result_unpriv = REJECT,
     23	.result = ACCEPT,
     24},
     25{
     26	"jump test 2",
     27	.insns = {
     28	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
     29	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 2),
     30	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
     31	BPF_JMP_IMM(BPF_JA, 0, 0, 14),
     32	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 2),
     33	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
     34	BPF_JMP_IMM(BPF_JA, 0, 0, 11),
     35	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 2),
     36	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
     37	BPF_JMP_IMM(BPF_JA, 0, 0, 8),
     38	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 2),
     39	BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
     40	BPF_JMP_IMM(BPF_JA, 0, 0, 5),
     41	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 2),
     42	BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
     43	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
     44	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
     45	BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
     46	BPF_MOV64_IMM(BPF_REG_0, 0),
     47	BPF_EXIT_INSN(),
     48	},
     49	.errstr_unpriv = "R1 pointer comparison",
     50	.result_unpriv = REJECT,
     51	.result = ACCEPT,
     52},
     53{
     54	"jump test 3",
     55	.insns = {
     56	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
     57	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
     58	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
     59	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
     60	BPF_JMP_IMM(BPF_JA, 0, 0, 19),
     61	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 3),
     62	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
     63	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -16),
     64	BPF_JMP_IMM(BPF_JA, 0, 0, 15),
     65	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 3),
     66	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
     67	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -32),
     68	BPF_JMP_IMM(BPF_JA, 0, 0, 11),
     69	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 3),
     70	BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
     71	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -40),
     72	BPF_JMP_IMM(BPF_JA, 0, 0, 7),
     73	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 3),
     74	BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
     75	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -48),
     76	BPF_JMP_IMM(BPF_JA, 0, 0, 3),
     77	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 0),
     78	BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
     79	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -56),
     80	BPF_LD_MAP_FD(BPF_REG_1, 0),
     81	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
     82	BPF_EXIT_INSN(),
     83	},
     84	.fixup_map_hash_8b = { 24 },
     85	.errstr_unpriv = "R1 pointer comparison",
     86	.result_unpriv = REJECT,
     87	.result = ACCEPT,
     88	.retval = -ENOENT,
     89},
     90{
     91	"jump test 4",
     92	.insns = {
     93	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
     94	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
     95	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
     96	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
     97	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
     98	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
     99	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    100	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    101	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    102	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    103	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    104	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    105	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    106	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    107	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    108	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    109	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    110	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    111	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    112	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    113	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    114	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    115	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    116	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    117	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    118	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    119	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    120	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    121	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    122	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    123	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    124	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    125	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
    126	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
    127	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
    128	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
    129	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
    130	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
    131	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
    132	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
    133	BPF_MOV64_IMM(BPF_REG_0, 0),
    134	BPF_EXIT_INSN(),
    135	},
    136	.errstr_unpriv = "R1 pointer comparison",
    137	.result_unpriv = REJECT,
    138	.result = ACCEPT,
    139},
    140{
    141	"jump test 5",
    142	.insns = {
    143	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
    144	BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
    145	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
    146	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
    147	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    148	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
    149	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    150	BPF_MOV64_IMM(BPF_REG_0, 0),
    151	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
    152	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
    153	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    154	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
    155	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    156	BPF_MOV64_IMM(BPF_REG_0, 0),
    157	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
    158	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
    159	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    160	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
    161	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    162	BPF_MOV64_IMM(BPF_REG_0, 0),
    163	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
    164	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
    165	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    166	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
    167	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    168	BPF_MOV64_IMM(BPF_REG_0, 0),
    169	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
    170	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
    171	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    172	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
    173	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    174	BPF_MOV64_IMM(BPF_REG_0, 0),
    175	BPF_EXIT_INSN(),
    176	},
    177	.errstr_unpriv = "R1 pointer comparison",
    178	.result_unpriv = REJECT,
    179	.result = ACCEPT,
    180},
    181{
    182	"jump test 6",
    183	.insns = {
    184	BPF_MOV64_IMM(BPF_REG_0, 1),
    185	BPF_MOV64_IMM(BPF_REG_1, 2),
    186	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    187	BPF_MOV64_IMM(BPF_REG_0, 2),
    188	BPF_EXIT_INSN(),
    189	BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
    190	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    191	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    192	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    193	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    194	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    195	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    196	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    197	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    198	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    199	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    200	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    201	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    202	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    203	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    204	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    205	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    206	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
    207	},
    208	.result = ACCEPT,
    209	.retval = 2,
    210},
    211{
    212	"jump test 7",
    213	.insns = {
    214	BPF_MOV64_IMM(BPF_REG_0, 1),
    215	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    216	BPF_MOV64_IMM(BPF_REG_0, 3),
    217	BPF_EXIT_INSN(),
    218	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
    219	BPF_MOV64_IMM(BPF_REG_0, 42),
    220	BPF_MOV64_IMM(BPF_REG_0, 42),
    221	BPF_MOV64_IMM(BPF_REG_0, 42),
    222	BPF_MOV64_IMM(BPF_REG_0, 42),
    223	BPF_MOV64_IMM(BPF_REG_0, 42),
    224	BPF_MOV64_IMM(BPF_REG_0, 42),
    225	BPF_MOV64_IMM(BPF_REG_0, 42),
    226	BPF_MOV64_IMM(BPF_REG_0, 42),
    227	BPF_MOV64_IMM(BPF_REG_0, 42),
    228	BPF_MOV64_IMM(BPF_REG_0, 42),
    229	BPF_MOV64_IMM(BPF_REG_0, 42),
    230	BPF_MOV64_IMM(BPF_REG_0, 42),
    231	BPF_MOV64_IMM(BPF_REG_0, 42),
    232	BPF_MOV64_IMM(BPF_REG_0, 42),
    233	BPF_MOV64_IMM(BPF_REG_0, 42),
    234	BPF_MOV64_IMM(BPF_REG_0, 42),
    235	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
    236	},
    237	.result = ACCEPT,
    238	.retval = 3,
    239},
    240{
    241	"jump test 8",
    242	.insns = {
    243	BPF_MOV64_IMM(BPF_REG_0, 1),
    244	BPF_MOV64_IMM(BPF_REG_1, 2),
    245	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    246	BPF_MOV64_IMM(BPF_REG_0, 3),
    247	BPF_EXIT_INSN(),
    248	BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
    249	BPF_MOV64_IMM(BPF_REG_0, 42),
    250	BPF_MOV64_IMM(BPF_REG_0, 42),
    251	BPF_MOV64_IMM(BPF_REG_0, 42),
    252	BPF_MOV64_IMM(BPF_REG_0, 42),
    253	BPF_MOV64_IMM(BPF_REG_0, 42),
    254	BPF_MOV64_IMM(BPF_REG_0, 42),
    255	BPF_MOV64_IMM(BPF_REG_0, 42),
    256	BPF_MOV64_IMM(BPF_REG_0, 42),
    257	BPF_MOV64_IMM(BPF_REG_0, 42),
    258	BPF_MOV64_IMM(BPF_REG_0, 42),
    259	BPF_MOV64_IMM(BPF_REG_0, 42),
    260	BPF_MOV64_IMM(BPF_REG_0, 42),
    261	BPF_MOV64_IMM(BPF_REG_0, 42),
    262	BPF_MOV64_IMM(BPF_REG_0, 42),
    263	BPF_MOV64_IMM(BPF_REG_0, 42),
    264	BPF_MOV64_IMM(BPF_REG_0, 42),
    265	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
    266	},
    267	.result = ACCEPT,
    268	.retval = 3,
    269},
    270{
    271	"jump/call test 9",
    272	.insns = {
    273	BPF_MOV64_IMM(BPF_REG_0, 1),
    274	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
    275	BPF_MOV64_IMM(BPF_REG_0, 3),
    276	BPF_EXIT_INSN(),
    277	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
    278	BPF_MOV64_IMM(BPF_REG_0, 42),
    279	BPF_MOV64_IMM(BPF_REG_0, 42),
    280	BPF_MOV64_IMM(BPF_REG_0, 42),
    281	BPF_MOV64_IMM(BPF_REG_0, 42),
    282	BPF_MOV64_IMM(BPF_REG_0, 42),
    283	BPF_MOV64_IMM(BPF_REG_0, 42),
    284	BPF_MOV64_IMM(BPF_REG_0, 42),
    285	BPF_MOV64_IMM(BPF_REG_0, 42),
    286	BPF_MOV64_IMM(BPF_REG_0, 42),
    287	BPF_MOV64_IMM(BPF_REG_0, 42),
    288	BPF_MOV64_IMM(BPF_REG_0, 42),
    289	BPF_MOV64_IMM(BPF_REG_0, 42),
    290	BPF_MOV64_IMM(BPF_REG_0, 42),
    291	BPF_MOV64_IMM(BPF_REG_0, 42),
    292	BPF_MOV64_IMM(BPF_REG_0, 42),
    293	BPF_MOV64_IMM(BPF_REG_0, 42),
    294	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
    295	BPF_EXIT_INSN(),
    296	},
    297	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
    298	.result = REJECT,
    299	.errstr = "jump out of range from insn 1 to 4",
    300},
    301{
    302	"jump/call test 10",
    303	.insns = {
    304	BPF_MOV64_IMM(BPF_REG_0, 1),
    305	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 2),
    306	BPF_MOV64_IMM(BPF_REG_0, 3),
    307	BPF_EXIT_INSN(),
    308	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
    309	BPF_MOV64_IMM(BPF_REG_0, 42),
    310	BPF_MOV64_IMM(BPF_REG_0, 42),
    311	BPF_MOV64_IMM(BPF_REG_0, 42),
    312	BPF_MOV64_IMM(BPF_REG_0, 42),
    313	BPF_MOV64_IMM(BPF_REG_0, 42),
    314	BPF_MOV64_IMM(BPF_REG_0, 42),
    315	BPF_MOV64_IMM(BPF_REG_0, 42),
    316	BPF_MOV64_IMM(BPF_REG_0, 42),
    317	BPF_MOV64_IMM(BPF_REG_0, 42),
    318	BPF_MOV64_IMM(BPF_REG_0, 42),
    319	BPF_MOV64_IMM(BPF_REG_0, 42),
    320	BPF_MOV64_IMM(BPF_REG_0, 42),
    321	BPF_MOV64_IMM(BPF_REG_0, 42),
    322	BPF_MOV64_IMM(BPF_REG_0, 42),
    323	BPF_MOV64_IMM(BPF_REG_0, 42),
    324	BPF_MOV64_IMM(BPF_REG_0, 42),
    325	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
    326	BPF_EXIT_INSN(),
    327	},
    328	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
    329	.result = REJECT,
    330	.errstr = "last insn is not an exit or jmp",
    331},
    332{
    333	"jump/call test 11",
    334	.insns = {
    335	BPF_MOV64_IMM(BPF_REG_0, 1),
    336	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 4),
    337	BPF_MOV64_IMM(BPF_REG_0, 3),
    338	BPF_EXIT_INSN(),
    339	BPF_MOV64_IMM(BPF_REG_0, 3),
    340	BPF_EXIT_INSN(),
    341	BPF_MOV64_IMM(BPF_REG_0, 1),
    342	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 26),
    343	BPF_MOV64_IMM(BPF_REG_0, 42),
    344	BPF_MOV64_IMM(BPF_REG_0, 42),
    345	BPF_MOV64_IMM(BPF_REG_0, 42),
    346	BPF_MOV64_IMM(BPF_REG_0, 42),
    347	BPF_MOV64_IMM(BPF_REG_0, 42),
    348	BPF_MOV64_IMM(BPF_REG_0, 42),
    349	BPF_MOV64_IMM(BPF_REG_0, 42),
    350	BPF_MOV64_IMM(BPF_REG_0, 42),
    351	BPF_MOV64_IMM(BPF_REG_0, 42),
    352	BPF_MOV64_IMM(BPF_REG_0, 42),
    353	BPF_MOV64_IMM(BPF_REG_0, 42),
    354	BPF_MOV64_IMM(BPF_REG_0, 42),
    355	BPF_MOV64_IMM(BPF_REG_0, 42),
    356	BPF_MOV64_IMM(BPF_REG_0, 42),
    357	BPF_MOV64_IMM(BPF_REG_0, 42),
    358	BPF_MOV64_IMM(BPF_REG_0, 42),
    359	BPF_MOV64_IMM(BPF_REG_0, 42),
    360	BPF_MOV64_IMM(BPF_REG_0, 42),
    361	BPF_MOV64_IMM(BPF_REG_0, 42),
    362	BPF_MOV64_IMM(BPF_REG_0, 42),
    363	BPF_MOV64_IMM(BPF_REG_0, 42),
    364	BPF_MOV64_IMM(BPF_REG_0, 42),
    365	BPF_MOV64_IMM(BPF_REG_0, 42),
    366	BPF_MOV64_IMM(BPF_REG_0, 42),
    367	BPF_MOV64_IMM(BPF_REG_0, 42),
    368	BPF_MOV64_IMM(BPF_REG_0, 42),
    369	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -31),
    370	BPF_EXIT_INSN(),
    371	},
    372	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
    373	.result = ACCEPT,
    374	.retval = 3,
    375},
    376{
    377	"jump & dead code elimination",
    378	.insns = {
    379	BPF_MOV64_IMM(BPF_REG_0, 1),
    380	BPF_MOV64_IMM(BPF_REG_3, 0),
    381	BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
    382	BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
    383	BPF_ALU64_IMM(BPF_OR, BPF_REG_3, 32767),
    384	BPF_JMP_IMM(BPF_JSGE, BPF_REG_3, 0, 1),
    385	BPF_EXIT_INSN(),
    386	BPF_JMP_IMM(BPF_JSLE, BPF_REG_3, 0x8000, 1),
    387	BPF_EXIT_INSN(),
    388	BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -32767),
    389	BPF_MOV64_IMM(BPF_REG_0, 2),
    390	BPF_JMP_IMM(BPF_JLE, BPF_REG_3, 0, 1),
    391	BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
    392	BPF_EXIT_INSN(),
    393	},
    394	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
    395	.result = ACCEPT,
    396	.retval = 2,
    397},