Back to home page

OSCL-LXR

 
 

    


0001 {
0002     "invalid map_fd for function call",
0003     .insns = {
0004     BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
0005     BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_10),
0006     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0007     BPF_LD_MAP_FD(BPF_REG_1, 0),
0008     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
0009     BPF_EXIT_INSN(),
0010     },
0011     .errstr = "fd 0 is not pointing to valid bpf_map",
0012     .result = REJECT,
0013 },
0014 {
0015     "don't check return value before access",
0016     .insns = {
0017     BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
0018     BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0019     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0020     BPF_LD_MAP_FD(BPF_REG_1, 0),
0021     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0022     BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
0023     BPF_EXIT_INSN(),
0024     },
0025     .fixup_map_hash_8b = { 3 },
0026     .errstr = "R0 invalid mem access 'map_value_or_null'",
0027     .result = REJECT,
0028 },
0029 {
0030     "access memory with incorrect alignment",
0031     .insns = {
0032     BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
0033     BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0034     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0035     BPF_LD_MAP_FD(BPF_REG_1, 0),
0036     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0037     BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
0038     BPF_ST_MEM(BPF_DW, BPF_REG_0, 4, 0),
0039     BPF_EXIT_INSN(),
0040     },
0041     .fixup_map_hash_8b = { 3 },
0042     .errstr = "misaligned value access",
0043     .result = REJECT,
0044     .flags = F_LOAD_WITH_STRICT_ALIGNMENT,
0045 },
0046 {
0047     "sometimes access memory with incorrect alignment",
0048     .insns = {
0049     BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
0050     BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0051     BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0052     BPF_LD_MAP_FD(BPF_REG_1, 0),
0053     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0054     BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0055     BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
0056     BPF_EXIT_INSN(),
0057     BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 1),
0058     BPF_EXIT_INSN(),
0059     },
0060     .fixup_map_hash_8b = { 3 },
0061     .errstr = "R0 invalid mem access",
0062     .errstr_unpriv = "R0 leaks addr",
0063     .result = REJECT,
0064     .flags = F_LOAD_WITH_STRICT_ALIGNMENT,
0065 },