treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / tools / testing / selftests / bpf / verifier / meta_access.c
blob205292b8dd65f3daf72e43cdfd71336db9d4f1cf
2 "meta access, test1",
3 .insns = {
4 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
5 offsetof(struct xdp_md, data_meta)),
6 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
7 BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
8 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
9 BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
10 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
11 BPF_MOV64_IMM(BPF_REG_0, 0),
12 BPF_EXIT_INSN(),
14 .result = ACCEPT,
15 .prog_type = BPF_PROG_TYPE_XDP,
18 "meta access, test2",
19 .insns = {
20 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
21 offsetof(struct xdp_md, data_meta)),
22 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
23 BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
24 BPF_ALU64_IMM(BPF_SUB, BPF_REG_0, 8),
25 BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
26 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
27 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
28 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_0, 0),
29 BPF_MOV64_IMM(BPF_REG_0, 0),
30 BPF_EXIT_INSN(),
32 .result = REJECT,
33 .errstr = "invalid access to packet, off=-8",
34 .prog_type = BPF_PROG_TYPE_XDP,
37 "meta access, test3",
38 .insns = {
39 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
40 offsetof(struct xdp_md, data_meta)),
41 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
42 offsetof(struct xdp_md, data_end)),
43 BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
44 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
45 BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
46 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
47 BPF_MOV64_IMM(BPF_REG_0, 0),
48 BPF_EXIT_INSN(),
50 .result = REJECT,
51 .errstr = "invalid access to packet",
52 .prog_type = BPF_PROG_TYPE_XDP,
55 "meta access, test4",
56 .insns = {
57 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
58 offsetof(struct xdp_md, data_meta)),
59 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
60 offsetof(struct xdp_md, data_end)),
61 BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, offsetof(struct xdp_md, data)),
62 BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
63 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
64 BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
65 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
66 BPF_MOV64_IMM(BPF_REG_0, 0),
67 BPF_EXIT_INSN(),
69 .result = REJECT,
70 .errstr = "invalid access to packet",
71 .prog_type = BPF_PROG_TYPE_XDP,
74 "meta access, test5",
75 .insns = {
76 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
77 offsetof(struct xdp_md, data_meta)),
78 BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, offsetof(struct xdp_md, data)),
79 BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
80 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
81 BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_4, 3),
82 BPF_MOV64_IMM(BPF_REG_2, -8),
83 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_xdp_adjust_meta),
84 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_3, 0),
85 BPF_MOV64_IMM(BPF_REG_0, 0),
86 BPF_EXIT_INSN(),
88 .result = REJECT,
89 .errstr = "R3 !read_ok",
90 .prog_type = BPF_PROG_TYPE_XDP,
93 "meta access, test6",
94 .insns = {
95 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
96 offsetof(struct xdp_md, data_meta)),
97 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
98 BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
99 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
100 BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
101 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
102 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_0, 1),
103 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
104 BPF_MOV64_IMM(BPF_REG_0, 0),
105 BPF_EXIT_INSN(),
107 .result = REJECT,
108 .errstr = "invalid access to packet",
109 .prog_type = BPF_PROG_TYPE_XDP,
112 "meta access, test7",
113 .insns = {
114 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
115 offsetof(struct xdp_md, data_meta)),
116 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
117 BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
118 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
119 BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
120 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
121 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
122 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
123 BPF_MOV64_IMM(BPF_REG_0, 0),
124 BPF_EXIT_INSN(),
126 .result = ACCEPT,
127 .prog_type = BPF_PROG_TYPE_XDP,
130 "meta access, test8",
131 .insns = {
132 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
133 offsetof(struct xdp_md, data_meta)),
134 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
135 BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
136 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 0xFFFF),
137 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
138 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
139 BPF_MOV64_IMM(BPF_REG_0, 0),
140 BPF_EXIT_INSN(),
142 .result = ACCEPT,
143 .prog_type = BPF_PROG_TYPE_XDP,
146 "meta access, test9",
147 .insns = {
148 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
149 offsetof(struct xdp_md, data_meta)),
150 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
151 BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
152 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 0xFFFF),
153 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 1),
154 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
155 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
156 BPF_MOV64_IMM(BPF_REG_0, 0),
157 BPF_EXIT_INSN(),
159 .result = REJECT,
160 .errstr = "invalid access to packet",
161 .prog_type = BPF_PROG_TYPE_XDP,
164 "meta access, test10",
165 .insns = {
166 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
167 offsetof(struct xdp_md, data_meta)),
168 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
169 BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
170 offsetof(struct xdp_md, data_end)),
171 BPF_MOV64_IMM(BPF_REG_5, 42),
172 BPF_MOV64_IMM(BPF_REG_6, 24),
173 BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_5, -8),
174 BPF_STX_XADD(BPF_DW, BPF_REG_10, BPF_REG_6, -8),
175 BPF_LDX_MEM(BPF_DW, BPF_REG_5, BPF_REG_10, -8),
176 BPF_JMP_IMM(BPF_JGT, BPF_REG_5, 100, 6),
177 BPF_ALU64_REG(BPF_ADD, BPF_REG_3, BPF_REG_5),
178 BPF_MOV64_REG(BPF_REG_5, BPF_REG_3),
179 BPF_MOV64_REG(BPF_REG_6, BPF_REG_2),
180 BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 8),
181 BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_5, 1),
182 BPF_LDX_MEM(BPF_B, BPF_REG_2, BPF_REG_2, 0),
183 BPF_MOV64_IMM(BPF_REG_0, 0),
184 BPF_EXIT_INSN(),
186 .result = REJECT,
187 .errstr = "invalid access to packet",
188 .prog_type = BPF_PROG_TYPE_XDP,
191 "meta access, test11",
192 .insns = {
193 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
194 offsetof(struct xdp_md, data_meta)),
195 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
196 BPF_MOV64_IMM(BPF_REG_5, 42),
197 BPF_MOV64_IMM(BPF_REG_6, 24),
198 BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_5, -8),
199 BPF_STX_XADD(BPF_DW, BPF_REG_10, BPF_REG_6, -8),
200 BPF_LDX_MEM(BPF_DW, BPF_REG_5, BPF_REG_10, -8),
201 BPF_JMP_IMM(BPF_JGT, BPF_REG_5, 100, 6),
202 BPF_ALU64_REG(BPF_ADD, BPF_REG_2, BPF_REG_5),
203 BPF_MOV64_REG(BPF_REG_5, BPF_REG_2),
204 BPF_MOV64_REG(BPF_REG_6, BPF_REG_2),
205 BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 8),
206 BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_3, 1),
207 BPF_LDX_MEM(BPF_B, BPF_REG_5, BPF_REG_5, 0),
208 BPF_MOV64_IMM(BPF_REG_0, 0),
209 BPF_EXIT_INSN(),
211 .result = ACCEPT,
212 .prog_type = BPF_PROG_TYPE_XDP,
215 "meta access, test12",
216 .insns = {
217 BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
218 offsetof(struct xdp_md, data_meta)),
219 BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
220 BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
221 offsetof(struct xdp_md, data_end)),
222 BPF_MOV64_REG(BPF_REG_5, BPF_REG_3),
223 BPF_ALU64_IMM(BPF_ADD, BPF_REG_5, 16),
224 BPF_JMP_REG(BPF_JGT, BPF_REG_5, BPF_REG_4, 5),
225 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_3, 0),
226 BPF_MOV64_REG(BPF_REG_5, BPF_REG_2),
227 BPF_ALU64_IMM(BPF_ADD, BPF_REG_5, 16),
228 BPF_JMP_REG(BPF_JGT, BPF_REG_5, BPF_REG_3, 1),
229 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
230 BPF_MOV64_IMM(BPF_REG_0, 0),
231 BPF_EXIT_INSN(),
233 .result = ACCEPT,
234 .prog_type = BPF_PROG_TYPE_XDP,