aboutsummaryrefslogtreecommitdiffstats
path: root/lib/test_bpf.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2014-05-22 13:16:46 -0400
committerDavid S. Miller <davem@davemloft.net>2014-05-23 15:09:09 -0400
commitece80490e2c1cefda018b2e5b96d4f39083d9096 (patch)
tree05d399547dee0945172cb887b185edeb6bc8557a /lib/test_bpf.c
parented616689a3d95eb6c9bdbb1ef74b0f50cbdf276a (diff)
lib/test_bpf.c: don't use gcc union shortcut
Older gcc's (mine is gcc-4.4.4) make a mess of this. lib/test_bpf.c:74: error: unknown field 'insns' specified in initializer lib/test_bpf.c:75: warning: missing braces around initializer lib/test_bpf.c:75: warning: (near initialization for 'tests[0].<anonymous>.insns[0]') lib/test_bpf.c:76: error: extra brace group at end of initializer lib/test_bpf.c:76: error: (near initialization for 'tests[0].<anonymous>') lib/test_bpf.c:76: warning: excess elements in union initializer lib/test_bpf.c:76: warning: (near initialization for 'tests[0].<anonymous>') lib/test_bpf.c:77: error: extra brace group at end of initializer Cc: Alexei Starovoitov <ast@plumgrid.com> Cc: David S. Miller <davem@davemloft.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib/test_bpf.c')
-rw-r--r--lib/test_bpf.c104
1 files changed, 52 insertions, 52 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c
index e160934430eb..3d80adbdb559 100644
--- a/lib/test_bpf.c
+++ b/lib/test_bpf.c
@@ -54,7 +54,7 @@ struct bpf_test {
54 union { 54 union {
55 struct sock_filter insns[MAX_INSNS]; 55 struct sock_filter insns[MAX_INSNS];
56 struct sock_filter_int insns_int[MAX_INSNS]; 56 struct sock_filter_int insns_int[MAX_INSNS];
57 }; 57 } u;
58 enum { 58 enum {
59 NO_DATA, 59 NO_DATA,
60 EXPECTED_FAIL, 60 EXPECTED_FAIL,
@@ -71,7 +71,7 @@ struct bpf_test {
71static struct bpf_test tests[] = { 71static struct bpf_test tests[] = {
72 { 72 {
73 "TAX", 73 "TAX",
74 .insns = { 74 .u.insns = {
75 BPF_STMT(BPF_LD | BPF_IMM, 1), 75 BPF_STMT(BPF_LD | BPF_IMM, 1),
76 BPF_STMT(BPF_MISC | BPF_TAX, 0), 76 BPF_STMT(BPF_MISC | BPF_TAX, 0),
77 BPF_STMT(BPF_LD | BPF_IMM, 2), 77 BPF_STMT(BPF_LD | BPF_IMM, 2),
@@ -90,7 +90,7 @@ static struct bpf_test tests[] = {
90 }, 90 },
91 { 91 {
92 "TXA", 92 "TXA",
93 .insns = { 93 .u.insns = {
94 BPF_STMT(BPF_LDX | BPF_LEN, 0), 94 BPF_STMT(BPF_LDX | BPF_LEN, 0),
95 BPF_STMT(BPF_MISC | BPF_TXA, 0), 95 BPF_STMT(BPF_MISC | BPF_TXA, 0),
96 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0), 96 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
@@ -102,7 +102,7 @@ static struct bpf_test tests[] = {
102 }, 102 },
103 { 103 {
104 "ADD_SUB_MUL_K", 104 "ADD_SUB_MUL_K",
105 .insns = { 105 .u.insns = {
106 BPF_STMT(BPF_LD | BPF_IMM, 1), 106 BPF_STMT(BPF_LD | BPF_IMM, 1),
107 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 2), 107 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 2),
108 BPF_STMT(BPF_LDX | BPF_IMM, 3), 108 BPF_STMT(BPF_LDX | BPF_IMM, 3),
@@ -117,7 +117,7 @@ static struct bpf_test tests[] = {
117 }, 117 },
118 { 118 {
119 "DIV_KX", 119 "DIV_KX",
120 .insns = { 120 .u.insns = {
121 BPF_STMT(BPF_LD | BPF_IMM, 8), 121 BPF_STMT(BPF_LD | BPF_IMM, 8),
122 BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2), 122 BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2),
123 BPF_STMT(BPF_MISC | BPF_TAX, 0), 123 BPF_STMT(BPF_MISC | BPF_TAX, 0),
@@ -135,7 +135,7 @@ static struct bpf_test tests[] = {
135 }, 135 },
136 { 136 {
137 "AND_OR_LSH_K", 137 "AND_OR_LSH_K",
138 .insns = { 138 .u.insns = {
139 BPF_STMT(BPF_LD | BPF_IMM, 0xff), 139 BPF_STMT(BPF_LD | BPF_IMM, 0xff),
140 BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf0), 140 BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf0),
141 BPF_STMT(BPF_ALU | BPF_LSH | BPF_K, 27), 141 BPF_STMT(BPF_ALU | BPF_LSH | BPF_K, 27),
@@ -151,7 +151,7 @@ static struct bpf_test tests[] = {
151 }, 151 },
152 { 152 {
153 "LD_IND", 153 "LD_IND",
154 .insns = { 154 .u.insns = {
155 BPF_STMT(BPF_LDX | BPF_LEN, 0), 155 BPF_STMT(BPF_LDX | BPF_LEN, 0),
156 BPF_STMT(BPF_LD | BPF_H | BPF_IND, MAX_K), 156 BPF_STMT(BPF_LD | BPF_H | BPF_IND, MAX_K),
157 BPF_STMT(BPF_RET | BPF_K, 1) 157 BPF_STMT(BPF_RET | BPF_K, 1)
@@ -162,7 +162,7 @@ static struct bpf_test tests[] = {
162 }, 162 },
163 { 163 {
164 "LD_ABS", 164 "LD_ABS",
165 .insns = { 165 .u.insns = {
166 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 1000), 166 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 1000),
167 BPF_STMT(BPF_RET | BPF_K, 1) 167 BPF_STMT(BPF_RET | BPF_K, 1)
168 }, 168 },
@@ -172,7 +172,7 @@ static struct bpf_test tests[] = {
172 }, 172 },
173 { 173 {
174 "LD_ABS_LL", 174 "LD_ABS_LL",
175 .insns = { 175 .u.insns = {
176 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF), 176 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF),
177 BPF_STMT(BPF_MISC | BPF_TAX, 0), 177 BPF_STMT(BPF_MISC | BPF_TAX, 0),
178 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF + 1), 178 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF + 1),
@@ -185,7 +185,7 @@ static struct bpf_test tests[] = {
185 }, 185 },
186 { 186 {
187 "LD_IND_LL", 187 "LD_IND_LL",
188 .insns = { 188 .u.insns = {
189 BPF_STMT(BPF_LD | BPF_IMM, SKF_LL_OFF - 1), 189 BPF_STMT(BPF_LD | BPF_IMM, SKF_LL_OFF - 1),
190 BPF_STMT(BPF_LDX | BPF_LEN, 0), 190 BPF_STMT(BPF_LDX | BPF_LEN, 0),
191 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0), 191 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
@@ -199,7 +199,7 @@ static struct bpf_test tests[] = {
199 }, 199 },
200 { 200 {
201 "LD_ABS_NET", 201 "LD_ABS_NET",
202 .insns = { 202 .u.insns = {
203 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF), 203 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF),
204 BPF_STMT(BPF_MISC | BPF_TAX, 0), 204 BPF_STMT(BPF_MISC | BPF_TAX, 0),
205 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF + 1), 205 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF + 1),
@@ -212,7 +212,7 @@ static struct bpf_test tests[] = {
212 }, 212 },
213 { 213 {
214 "LD_IND_NET", 214 "LD_IND_NET",
215 .insns = { 215 .u.insns = {
216 BPF_STMT(BPF_LD | BPF_IMM, SKF_NET_OFF - 15), 216 BPF_STMT(BPF_LD | BPF_IMM, SKF_NET_OFF - 15),
217 BPF_STMT(BPF_LDX | BPF_LEN, 0), 217 BPF_STMT(BPF_LDX | BPF_LEN, 0),
218 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0), 218 BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
@@ -226,7 +226,7 @@ static struct bpf_test tests[] = {
226 }, 226 },
227 { 227 {
228 "LD_PKTTYPE", 228 "LD_PKTTYPE",
229 .insns = { 229 .u.insns = {
230 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 230 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
231 SKF_AD_OFF + SKF_AD_PKTTYPE), 231 SKF_AD_OFF + SKF_AD_PKTTYPE),
232 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0), 232 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0),
@@ -247,7 +247,7 @@ static struct bpf_test tests[] = {
247 }, 247 },
248 { 248 {
249 "LD_MARK", 249 "LD_MARK",
250 .insns = { 250 .u.insns = {
251 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 251 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
252 SKF_AD_OFF + SKF_AD_MARK), 252 SKF_AD_OFF + SKF_AD_MARK),
253 BPF_STMT(BPF_RET | BPF_A, 0) 253 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -258,7 +258,7 @@ static struct bpf_test tests[] = {
258 }, 258 },
259 { 259 {
260 "LD_RXHASH", 260 "LD_RXHASH",
261 .insns = { 261 .u.insns = {
262 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 262 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
263 SKF_AD_OFF + SKF_AD_RXHASH), 263 SKF_AD_OFF + SKF_AD_RXHASH),
264 BPF_STMT(BPF_RET | BPF_A, 0) 264 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -269,7 +269,7 @@ static struct bpf_test tests[] = {
269 }, 269 },
270 { 270 {
271 "LD_QUEUE", 271 "LD_QUEUE",
272 .insns = { 272 .u.insns = {
273 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 273 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
274 SKF_AD_OFF + SKF_AD_QUEUE), 274 SKF_AD_OFF + SKF_AD_QUEUE),
275 BPF_STMT(BPF_RET | BPF_A, 0) 275 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -280,7 +280,7 @@ static struct bpf_test tests[] = {
280 }, 280 },
281 { 281 {
282 "LD_PROTOCOL", 282 "LD_PROTOCOL",
283 .insns = { 283 .u.insns = {
284 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 1), 284 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 1),
285 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 20, 1, 0), 285 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 20, 1, 0),
286 BPF_STMT(BPF_RET | BPF_K, 0), 286 BPF_STMT(BPF_RET | BPF_K, 0),
@@ -299,7 +299,7 @@ static struct bpf_test tests[] = {
299 }, 299 },
300 { 300 {
301 "LD_VLAN_TAG", 301 "LD_VLAN_TAG",
302 .insns = { 302 .u.insns = {
303 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 303 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
304 SKF_AD_OFF + SKF_AD_VLAN_TAG), 304 SKF_AD_OFF + SKF_AD_VLAN_TAG),
305 BPF_STMT(BPF_RET | BPF_A, 0) 305 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -313,7 +313,7 @@ static struct bpf_test tests[] = {
313 }, 313 },
314 { 314 {
315 "LD_VLAN_TAG_PRESENT", 315 "LD_VLAN_TAG_PRESENT",
316 .insns = { 316 .u.insns = {
317 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 317 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
318 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT), 318 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT),
319 BPF_STMT(BPF_RET | BPF_A, 0) 319 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -327,7 +327,7 @@ static struct bpf_test tests[] = {
327 }, 327 },
328 { 328 {
329 "LD_IFINDEX", 329 "LD_IFINDEX",
330 .insns = { 330 .u.insns = {
331 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 331 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
332 SKF_AD_OFF + SKF_AD_IFINDEX), 332 SKF_AD_OFF + SKF_AD_IFINDEX),
333 BPF_STMT(BPF_RET | BPF_A, 0) 333 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -338,7 +338,7 @@ static struct bpf_test tests[] = {
338 }, 338 },
339 { 339 {
340 "LD_HATYPE", 340 "LD_HATYPE",
341 .insns = { 341 .u.insns = {
342 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 342 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
343 SKF_AD_OFF + SKF_AD_HATYPE), 343 SKF_AD_OFF + SKF_AD_HATYPE),
344 BPF_STMT(BPF_RET | BPF_A, 0) 344 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -349,7 +349,7 @@ static struct bpf_test tests[] = {
349 }, 349 },
350 { 350 {
351 "LD_CPU", 351 "LD_CPU",
352 .insns = { 352 .u.insns = {
353 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 353 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
354 SKF_AD_OFF + SKF_AD_CPU), 354 SKF_AD_OFF + SKF_AD_CPU),
355 BPF_STMT(BPF_MISC | BPF_TAX, 0), 355 BPF_STMT(BPF_MISC | BPF_TAX, 0),
@@ -364,7 +364,7 @@ static struct bpf_test tests[] = {
364 }, 364 },
365 { 365 {
366 "LD_NLATTR", 366 "LD_NLATTR",
367 .insns = { 367 .u.insns = {
368 BPF_STMT(BPF_LDX | BPF_IMM, 1), 368 BPF_STMT(BPF_LDX | BPF_IMM, 1),
369 BPF_STMT(BPF_MISC | BPF_TXA, 0), 369 BPF_STMT(BPF_MISC | BPF_TXA, 0),
370 BPF_STMT(BPF_LDX | BPF_IMM, 3), 370 BPF_STMT(BPF_LDX | BPF_IMM, 3),
@@ -378,7 +378,7 @@ static struct bpf_test tests[] = {
378 }, 378 },
379 { 379 {
380 "LD_NLATTR_NEST", 380 "LD_NLATTR_NEST",
381 .insns = { 381 .u.insns = {
382 BPF_STMT(BPF_LD | BPF_IMM, 1), 382 BPF_STMT(BPF_LD | BPF_IMM, 1),
383 BPF_STMT(BPF_LDX | BPF_IMM, 3), 383 BPF_STMT(BPF_LDX | BPF_IMM, 3),
384 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 384 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
@@ -412,7 +412,7 @@ static struct bpf_test tests[] = {
412 }, 412 },
413 { 413 {
414 "LD_PAYLOAD_OFF", 414 "LD_PAYLOAD_OFF",
415 .insns = { 415 .u.insns = {
416 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 416 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
417 SKF_AD_OFF + SKF_AD_PAY_OFFSET), 417 SKF_AD_OFF + SKF_AD_PAY_OFFSET),
418 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 418 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
@@ -439,7 +439,7 @@ static struct bpf_test tests[] = {
439 }, 439 },
440 { 440 {
441 "LD_ANC_XOR", 441 "LD_ANC_XOR",
442 .insns = { 442 .u.insns = {
443 BPF_STMT(BPF_LD | BPF_IMM, 10), 443 BPF_STMT(BPF_LD | BPF_IMM, 10),
444 BPF_STMT(BPF_LDX | BPF_IMM, 300), 444 BPF_STMT(BPF_LDX | BPF_IMM, 300),
445 BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 445 BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
@@ -452,7 +452,7 @@ static struct bpf_test tests[] = {
452 }, 452 },
453 { 453 {
454 "SPILL_FILL", 454 "SPILL_FILL",
455 .insns = { 455 .u.insns = {
456 BPF_STMT(BPF_LDX | BPF_LEN, 0), 456 BPF_STMT(BPF_LDX | BPF_LEN, 0),
457 BPF_STMT(BPF_LD | BPF_IMM, 2), 457 BPF_STMT(BPF_LD | BPF_IMM, 2),
458 BPF_STMT(BPF_ALU | BPF_RSH, 1), 458 BPF_STMT(BPF_ALU | BPF_RSH, 1),
@@ -474,7 +474,7 @@ static struct bpf_test tests[] = {
474 }, 474 },
475 { 475 {
476 "JEQ", 476 "JEQ",
477 .insns = { 477 .u.insns = {
478 BPF_STMT(BPF_LDX | BPF_LEN, 0), 478 BPF_STMT(BPF_LDX | BPF_LEN, 0),
479 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2), 479 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
480 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_X, 0, 0, 1), 480 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_X, 0, 0, 1),
@@ -487,7 +487,7 @@ static struct bpf_test tests[] = {
487 }, 487 },
488 { 488 {
489 "JGT", 489 "JGT",
490 .insns = { 490 .u.insns = {
491 BPF_STMT(BPF_LDX | BPF_LEN, 0), 491 BPF_STMT(BPF_LDX | BPF_LEN, 0),
492 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2), 492 BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
493 BPF_JUMP(BPF_JMP | BPF_JGT | BPF_X, 0, 0, 1), 493 BPF_JUMP(BPF_JMP | BPF_JGT | BPF_X, 0, 0, 1),
@@ -500,7 +500,7 @@ static struct bpf_test tests[] = {
500 }, 500 },
501 { 501 {
502 "JGE", 502 "JGE",
503 .insns = { 503 .u.insns = {
504 BPF_STMT(BPF_LDX | BPF_LEN, 0), 504 BPF_STMT(BPF_LDX | BPF_LEN, 0),
505 BPF_STMT(BPF_LD | BPF_B | BPF_IND, MAX_K), 505 BPF_STMT(BPF_LD | BPF_B | BPF_IND, MAX_K),
506 BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 1, 1, 0), 506 BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 1, 1, 0),
@@ -519,7 +519,7 @@ static struct bpf_test tests[] = {
519 }, 519 },
520 { 520 {
521 "JSET", 521 "JSET",
522 .insns = { 522 .u.insns = {
523 BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0), 523 BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
524 BPF_JUMP(BPF_JMP | BPF_JA, 1, 1, 1), 524 BPF_JUMP(BPF_JMP | BPF_JA, 1, 1, 1),
525 BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0), 525 BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
@@ -551,7 +551,7 @@ static struct bpf_test tests[] = {
551 }, 551 },
552 { 552 {
553 "tcpdump port 22", 553 "tcpdump port 22",
554 .insns = { 554 .u.insns = {
555 { 0x28, 0, 0, 0x0000000c }, 555 { 0x28, 0, 0, 0x0000000c },
556 { 0x15, 0, 8, 0x000086dd }, 556 { 0x15, 0, 8, 0x000086dd },
557 { 0x30, 0, 0, 0x00000014 }, 557 { 0x30, 0, 0, 0x00000014 },
@@ -596,7 +596,7 @@ static struct bpf_test tests[] = {
596 }, 596 },
597 { 597 {
598 "tcpdump complex", 598 "tcpdump complex",
599 .insns = { 599 .u.insns = {
600 /* tcpdump -nei eth0 'tcp port 22 and (((ip[2:2] - 600 /* tcpdump -nei eth0 'tcp port 22 and (((ip[2:2] -
601 * ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) and 601 * ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) and
602 * (len > 115 or len < 30000000000)' -d 602 * (len > 115 or len < 30000000000)' -d
@@ -649,7 +649,7 @@ static struct bpf_test tests[] = {
649 }, 649 },
650 { 650 {
651 "RET_A", 651 "RET_A",
652 .insns = { 652 .u.insns = {
653 /* check that unitialized X and A contain zeros */ 653 /* check that unitialized X and A contain zeros */
654 BPF_STMT(BPF_MISC | BPF_TXA, 0), 654 BPF_STMT(BPF_MISC | BPF_TXA, 0),
655 BPF_STMT(BPF_RET | BPF_A, 0) 655 BPF_STMT(BPF_RET | BPF_A, 0)
@@ -660,7 +660,7 @@ static struct bpf_test tests[] = {
660 }, 660 },
661 { 661 {
662 "INT: ADD trivial", 662 "INT: ADD trivial",
663 .insns_int = { 663 .u.insns_int = {
664 BPF_ALU64_IMM(BPF_MOV, R1, 1), 664 BPF_ALU64_IMM(BPF_MOV, R1, 1),
665 BPF_ALU64_IMM(BPF_ADD, R1, 2), 665 BPF_ALU64_IMM(BPF_ADD, R1, 2),
666 BPF_ALU64_IMM(BPF_MOV, R2, 3), 666 BPF_ALU64_IMM(BPF_MOV, R2, 3),
@@ -676,7 +676,7 @@ static struct bpf_test tests[] = {
676 }, 676 },
677 { 677 {
678 "INT: MUL_X", 678 "INT: MUL_X",
679 .insns_int = { 679 .u.insns_int = {
680 BPF_ALU64_IMM(BPF_MOV, R0, -1), 680 BPF_ALU64_IMM(BPF_MOV, R0, -1),
681 BPF_ALU64_IMM(BPF_MOV, R1, -1), 681 BPF_ALU64_IMM(BPF_MOV, R1, -1),
682 BPF_ALU64_IMM(BPF_MOV, R2, 3), 682 BPF_ALU64_IMM(BPF_MOV, R2, 3),
@@ -692,7 +692,7 @@ static struct bpf_test tests[] = {
692 }, 692 },
693 { 693 {
694 "INT: MUL_X2", 694 "INT: MUL_X2",
695 .insns_int = { 695 .u.insns_int = {
696 BPF_ALU32_IMM(BPF_MOV, R0, -1), 696 BPF_ALU32_IMM(BPF_MOV, R0, -1),
697 BPF_ALU32_IMM(BPF_MOV, R1, -1), 697 BPF_ALU32_IMM(BPF_MOV, R1, -1),
698 BPF_ALU32_IMM(BPF_MOV, R2, 3), 698 BPF_ALU32_IMM(BPF_MOV, R2, 3),
@@ -709,7 +709,7 @@ static struct bpf_test tests[] = {
709 }, 709 },
710 { 710 {
711 "INT: MUL32_X", 711 "INT: MUL32_X",
712 .insns_int = { 712 .u.insns_int = {
713 BPF_ALU32_IMM(BPF_MOV, R0, -1), 713 BPF_ALU32_IMM(BPF_MOV, R0, -1),
714 BPF_ALU64_IMM(BPF_MOV, R1, -1), 714 BPF_ALU64_IMM(BPF_MOV, R1, -1),
715 BPF_ALU32_IMM(BPF_MOV, R2, 3), 715 BPF_ALU32_IMM(BPF_MOV, R2, 3),
@@ -730,7 +730,7 @@ static struct bpf_test tests[] = {
730 * different asm code. 730 * different asm code.
731 */ 731 */
732 "INT: ADD 64-bit", 732 "INT: ADD 64-bit",
733 .insns_int = { 733 .u.insns_int = {
734 BPF_ALU64_IMM(BPF_MOV, R0, 0), 734 BPF_ALU64_IMM(BPF_MOV, R0, 0),
735 BPF_ALU64_IMM(BPF_MOV, R1, 1), 735 BPF_ALU64_IMM(BPF_MOV, R1, 1),
736 BPF_ALU64_IMM(BPF_MOV, R2, 2), 736 BPF_ALU64_IMM(BPF_MOV, R2, 2),
@@ -888,7 +888,7 @@ static struct bpf_test tests[] = {
888 }, 888 },
889 { 889 {
890 "INT: ADD 32-bit", 890 "INT: ADD 32-bit",
891 .insns_int = { 891 .u.insns_int = {
892 BPF_ALU32_IMM(BPF_MOV, R0, 20), 892 BPF_ALU32_IMM(BPF_MOV, R0, 20),
893 BPF_ALU32_IMM(BPF_MOV, R1, 1), 893 BPF_ALU32_IMM(BPF_MOV, R1, 1),
894 BPF_ALU32_IMM(BPF_MOV, R2, 2), 894 BPF_ALU32_IMM(BPF_MOV, R2, 2),
@@ -1034,7 +1034,7 @@ static struct bpf_test tests[] = {
1034 }, 1034 },
1035 { /* Mainly checking JIT here. */ 1035 { /* Mainly checking JIT here. */
1036 "INT: SUB", 1036 "INT: SUB",
1037 .insns_int = { 1037 .u.insns_int = {
1038 BPF_ALU64_IMM(BPF_MOV, R0, 0), 1038 BPF_ALU64_IMM(BPF_MOV, R0, 0),
1039 BPF_ALU64_IMM(BPF_MOV, R1, 1), 1039 BPF_ALU64_IMM(BPF_MOV, R1, 1),
1040 BPF_ALU64_IMM(BPF_MOV, R2, 2), 1040 BPF_ALU64_IMM(BPF_MOV, R2, 2),
@@ -1167,7 +1167,7 @@ static struct bpf_test tests[] = {
1167 }, 1167 },
1168 { /* Mainly checking JIT here. */ 1168 { /* Mainly checking JIT here. */
1169 "INT: XOR", 1169 "INT: XOR",
1170 .insns_int = { 1170 .u.insns_int = {
1171 BPF_ALU64_REG(BPF_SUB, R0, R0), 1171 BPF_ALU64_REG(BPF_SUB, R0, R0),
1172 BPF_ALU64_REG(BPF_XOR, R1, R1), 1172 BPF_ALU64_REG(BPF_XOR, R1, R1),
1173 BPF_JMP_REG(BPF_JEQ, R0, R1, 1), 1173 BPF_JMP_REG(BPF_JEQ, R0, R1, 1),
@@ -1233,7 +1233,7 @@ static struct bpf_test tests[] = {
1233 }, 1233 },
1234 { /* Mainly checking JIT here. */ 1234 { /* Mainly checking JIT here. */
1235 "INT: MUL", 1235 "INT: MUL",
1236 .insns_int = { 1236 .u.insns_int = {
1237 BPF_ALU64_IMM(BPF_MOV, R0, 11), 1237 BPF_ALU64_IMM(BPF_MOV, R0, 11),
1238 BPF_ALU64_IMM(BPF_MOV, R1, 1), 1238 BPF_ALU64_IMM(BPF_MOV, R1, 1),
1239 BPF_ALU64_IMM(BPF_MOV, R2, 2), 1239 BPF_ALU64_IMM(BPF_MOV, R2, 2),
@@ -1295,7 +1295,7 @@ static struct bpf_test tests[] = {
1295 }, 1295 },
1296 { 1296 {
1297 "INT: ALU MIX", 1297 "INT: ALU MIX",
1298 .insns_int = { 1298 .u.insns_int = {
1299 BPF_ALU64_IMM(BPF_MOV, R0, 11), 1299 BPF_ALU64_IMM(BPF_MOV, R0, 11),
1300 BPF_ALU64_IMM(BPF_ADD, R0, -1), 1300 BPF_ALU64_IMM(BPF_ADD, R0, -1),
1301 BPF_ALU64_IMM(BPF_MOV, R2, 2), 1301 BPF_ALU64_IMM(BPF_MOV, R2, 2),
@@ -1315,7 +1315,7 @@ static struct bpf_test tests[] = {
1315 }, 1315 },
1316 { 1316 {
1317 "INT: DIV + ABS", 1317 "INT: DIV + ABS",
1318 .insns_int = { 1318 .u.insns_int = {
1319 BPF_ALU64_REG(BPF_MOV, R6, R1), 1319 BPF_ALU64_REG(BPF_MOV, R6, R1),
1320 BPF_LD_ABS(BPF_B, 3), 1320 BPF_LD_ABS(BPF_B, 3),
1321 BPF_ALU64_IMM(BPF_MOV, R2, 2), 1321 BPF_ALU64_IMM(BPF_MOV, R2, 2),
@@ -1332,7 +1332,7 @@ static struct bpf_test tests[] = {
1332 }, 1332 },
1333 { 1333 {
1334 "INT: DIV by zero", 1334 "INT: DIV by zero",
1335 .insns_int = { 1335 .u.insns_int = {
1336 BPF_ALU64_REG(BPF_MOV, R6, R1), 1336 BPF_ALU64_REG(BPF_MOV, R6, R1),
1337 BPF_ALU64_IMM(BPF_MOV, R7, 0), 1337 BPF_ALU64_IMM(BPF_MOV, R7, 0),
1338 BPF_LD_ABS(BPF_B, 3), 1338 BPF_LD_ABS(BPF_B, 3),
@@ -1345,7 +1345,7 @@ static struct bpf_test tests[] = {
1345 }, 1345 },
1346 { 1346 {
1347 "check: missing ret", 1347 "check: missing ret",
1348 .insns = { 1348 .u.insns = {
1349 BPF_STMT(BPF_LD | BPF_IMM, 1), 1349 BPF_STMT(BPF_LD | BPF_IMM, 1),
1350 }, 1350 },
1351 EXPECTED_FAIL, 1351 EXPECTED_FAIL,
@@ -1354,7 +1354,7 @@ static struct bpf_test tests[] = {
1354 }, 1354 },
1355 { 1355 {
1356 "check: div_k_0", 1356 "check: div_k_0",
1357 .insns = { 1357 .u.insns = {
1358 BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0), 1358 BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0),
1359 BPF_STMT(BPF_RET | BPF_K, 0) 1359 BPF_STMT(BPF_RET | BPF_K, 0)
1360 }, 1360 },
@@ -1364,7 +1364,7 @@ static struct bpf_test tests[] = {
1364 }, 1364 },
1365 { 1365 {
1366 "check: unknown insn", 1366 "check: unknown insn",
1367 .insns = { 1367 .u.insns = {
1368 /* seccomp insn, rejected in socket filter */ 1368 /* seccomp insn, rejected in socket filter */
1369 BPF_STMT(BPF_LDX | BPF_W | BPF_ABS, 0), 1369 BPF_STMT(BPF_LDX | BPF_W | BPF_ABS, 0),
1370 BPF_STMT(BPF_RET | BPF_K, 0) 1370 BPF_STMT(BPF_RET | BPF_K, 0)
@@ -1375,7 +1375,7 @@ static struct bpf_test tests[] = {
1375 }, 1375 },
1376 { 1376 {
1377 "check: out of range spill/fill", 1377 "check: out of range spill/fill",
1378 .insns = { 1378 .u.insns = {
1379 BPF_STMT(BPF_STX, 16), 1379 BPF_STMT(BPF_STX, 16),
1380 BPF_STMT(BPF_RET | BPF_K, 0) 1380 BPF_STMT(BPF_RET | BPF_K, 0)
1381 }, 1381 },
@@ -1478,7 +1478,7 @@ static __init int test_bpf(void)
1478 for (i = 0; i < ARRAY_SIZE(tests); i++) { 1478 for (i = 0; i < ARRAY_SIZE(tests); i++) {
1479 pr_info("#%d %s ", i, tests[i].descr); 1479 pr_info("#%d %s ", i, tests[i].descr);
1480 1480
1481 fprog.filter = tests[i].insns; 1481 fprog.filter = tests[i].u.insns;
1482 fprog.len = get_length(fprog.filter); 1482 fprog.len = get_length(fprog.filter);
1483 1483
1484 if (tests[i].data_type == SKB_INT) { 1484 if (tests[i].data_type == SKB_INT) {
@@ -1486,7 +1486,7 @@ static __init int test_bpf(void)
1486 if (!fp_ext) 1486 if (!fp_ext)
1487 return -ENOMEM; 1487 return -ENOMEM;
1488 fp = fp_ext; 1488 fp = fp_ext;
1489 memcpy(fp_ext->insns, tests[i].insns_int, 1489 memcpy(fp_ext->insns, tests[i].u.insns_int,
1490 fprog.len * 8); 1490 fprog.len * 8);
1491 fp->len = fprog.len; 1491 fp->len = fprog.len;
1492 sk_filter_select_runtime(fp); 1492 sk_filter_select_runtime(fp);