1 {
2 	"map element value is preserved across register spilling",
3 	.insns = {
4 	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5 	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
6 	BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
7 	BPF_LD_MAP_FD(BPF_REG_1, 0),
8 	BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem),
9 	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
10 	BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 42),
11 	BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
12 	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -184),
13 	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0),
14 	BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0),
15 	BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42),
16 	BPF_EXIT_INSN(),
17 	},
18 	.fixup_map_hash_48b = { 3 },
19 	.errstr_unpriv = "R0 leaks addr",
20 	.result = ACCEPT,
21 	.result_unpriv = REJECT,
22 },
23 {
24 	"map element value or null is marked on register spilling",
25 	.insns = {
26 	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
27 	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
28 	BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
29 	BPF_LD_MAP_FD(BPF_REG_1, 0),
30 	BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem),
31 	BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
32 	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -152),
33 	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0),
34 	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
35 	BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0),
36 	BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42),
37 	BPF_EXIT_INSN(),
38 	},
39 	.fixup_map_hash_48b = { 3 },
40 	.errstr_unpriv = "R0 leaks addr",
41 	.result = ACCEPT,
42 	.result_unpriv = REJECT,
43 },
44