2 "invalid map_fd for function call",
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
),
11 .errstr
= "fd 0 is not pointing to valid bpf_map",
15 "don't check return value before access",
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),
25 .fixup_map_hash_8b
= { 3 },
26 .errstr
= "R0 invalid mem access 'map_value_or_null'",
30 "access memory with incorrect alignment",
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),
41 .fixup_map_hash_8b
= { 3 },
42 .errstr
= "misaligned value access",
44 .flags
= F_LOAD_WITH_STRICT_ALIGNMENT
,
47 "sometimes access memory with incorrect alignment",
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),
57 BPF_ST_MEM(BPF_DW
, BPF_REG_0
, 0, 1),
60 .fixup_map_hash_8b
= { 3 },
61 .errstr
= "R0 invalid mem access",
62 .errstr_unpriv
= "R0 leaks addr",
64 .flags
= F_LOAD_WITH_STRICT_ALIGNMENT
,