Back to home page

OSCL-LXR

 
 

    


0001 {
0002     "map element value is preserved across register spilling",
0003     .insns = {
0004     BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0005     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0006     BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0007     BPF_LD_MAP_FD(BPF_REG_1, 0),
0008     BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem),
0009     BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
0010     BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 42),
0011     BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
0012     BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -184),
0013     BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0),
0014     BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0),
0015     BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42),
0016     BPF_EXIT_INSN(),
0017     },
0018     .fixup_map_hash_48b = { 3 },
0019     .errstr_unpriv = "R0 leaks addr",
0020     .result = ACCEPT,
0021     .result_unpriv = REJECT,
0022 },
0023 {
0024     "map element value or null is marked on register spilling",
0025     .insns = {
0026     BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0027     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0028     BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0029     BPF_LD_MAP_FD(BPF_REG_1, 0),
0030     BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem),
0031     BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
0032     BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -152),
0033     BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0),
0034     BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0035     BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0),
0036     BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42),
0037     BPF_EXIT_INSN(),
0038     },
0039     .fixup_map_hash_48b = { 3 },
0040     .errstr_unpriv = "R0 leaks addr",
0041     .result = ACCEPT,
0042     .result_unpriv = REJECT,
0043 },