WIP FPC-III support
[linux/fpc-iii.git] / tools / testing / selftests / bpf / verifier / map_ret_val.c
blobbdd0e8d18333b8baff9d297666b90f63371f3005
2 "invalid map_fd for function call",
3 .insns = {
4 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5 BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_10),
6 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
7 BPF_LD_MAP_FD(BPF_REG_1, 0),
8 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
9 BPF_EXIT_INSN(),
11 .errstr = "fd 0 is not pointing to valid bpf_map",
12 .result = REJECT,
15 "don't check return value before access",
16 .insns = {
17 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
18 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
19 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
20 BPF_LD_MAP_FD(BPF_REG_1, 0),
21 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
22 BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
23 BPF_EXIT_INSN(),
25 .fixup_map_hash_8b = { 3 },
26 .errstr = "R0 invalid mem access 'map_value_or_null'",
27 .result = REJECT,
30 "access memory with incorrect alignment",
31 .insns = {
32 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
33 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
34 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
35 BPF_LD_MAP_FD(BPF_REG_1, 0),
36 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
37 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
38 BPF_ST_MEM(BPF_DW, BPF_REG_0, 4, 0),
39 BPF_EXIT_INSN(),
41 .fixup_map_hash_8b = { 3 },
42 .errstr = "misaligned value access",
43 .result = REJECT,
44 .flags = F_LOAD_WITH_STRICT_ALIGNMENT,
47 "sometimes access memory with incorrect alignment",
48 .insns = {
49 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
50 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
51 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
52 BPF_LD_MAP_FD(BPF_REG_1, 0),
53 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
54 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
55 BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
56 BPF_EXIT_INSN(),
57 BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 1),
58 BPF_EXIT_INSN(),
60 .fixup_map_hash_8b = { 3 },
61 .errstr = "R0 invalid mem access",
62 .errstr_unpriv = "R0 leaks addr",
63 .result = REJECT,
64 .flags = F_LOAD_WITH_STRICT_ALIGNMENT,