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 },