File tree Expand file tree Collapse file tree 2 files changed +43
-0
lines changed
tools/testing/selftests/bpf Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 53
53
#include "verifier_movsx.skel.h"
54
54
#include "verifier_netfilter_ctx.skel.h"
55
55
#include "verifier_netfilter_retcode.skel.h"
56
+ #include "verifier_or_jmp32_k.skel.h"
56
57
#include "verifier_precision.skel.h"
57
58
#include "verifier_prevent_map_lookup.skel.h"
58
59
#include "verifier_raw_stack.skel.h"
@@ -170,6 +171,7 @@ void test_verifier_meta_access(void) { RUN(verifier_meta_access); }
170
171
void test_verifier_movsx (void ) { RUN (verifier_movsx ); }
171
172
void test_verifier_netfilter_ctx (void ) { RUN (verifier_netfilter_ctx ); }
172
173
void test_verifier_netfilter_retcode (void ) { RUN (verifier_netfilter_retcode ); }
174
+ void test_verifier_or_jmp32_k (void ) { RUN (verifier_or_jmp32_k ); }
173
175
void test_verifier_precision (void ) { RUN (verifier_precision ); }
174
176
void test_verifier_prevent_map_lookup (void ) { RUN (verifier_prevent_map_lookup ); }
175
177
void test_verifier_raw_stack (void ) { RUN (verifier_raw_stack ); }
Original file line number Diff line number Diff line change
1
+ // SPDX-License-Identifier: GPL-2.0
2
+
3
+ #include <linux/bpf.h>
4
+ #include <bpf/bpf_helpers.h>
5
+ #include "bpf_misc.h"
6
+
7
+ SEC ("socket" )
8
+ __description ("or_jmp32_k: bit ops + branch on unknown value" )
9
+ __failure
10
+ __msg ("R0 invalid mem access 'scalar'" )
11
+ __naked void or_jmp32_k (void )
12
+ {
13
+ asm volatile (" \
14
+ r0 = 0xffffffff; \
15
+ r0 /= 1; \
16
+ r1 = 0; \
17
+ w1 = -1; \
18
+ w1 >>= 1; \
19
+ w0 &= w1; \
20
+ w0 |= 2; \
21
+ if w0 != 0x7ffffffd goto l1; \
22
+ r0 = 1; \
23
+ exit; \
24
+ l3: \
25
+ r0 = 5; \
26
+ *(u64*)(r0 - 8) = r0; \
27
+ exit; \
28
+ l2: \
29
+ w0 -= 0xe; \
30
+ if w0 == 1 goto l3; \
31
+ r0 = 4; \
32
+ exit; \
33
+ l1: \
34
+ w0 -= 0x7ffffff0; \
35
+ if w0 s>= 0xe goto l2; \
36
+ r0 = 3; \
37
+ exit; \
38
+ " ::: __clobber_all );
39
+ }
40
+
41
+ char _license [] SEC ("license" ) = "GPL" ;
You can’t perform that action at this time.
0 commit comments