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 8
8
#include "test_ksyms_btf_null_check.skel.h"
9
9
#include "test_ksyms_weak.skel.h"
10
10
#include "test_ksyms_weak.lskel.h"
11
+ #include "test_ksyms_btf_write_check.skel.h"
11
12
12
13
static int duration ;
13
14
@@ -137,6 +138,16 @@ static void test_weak_syms_lskel(void)
137
138
test_ksyms_weak_lskel__destroy (skel );
138
139
}
139
140
141
+ static void test_write_check (void )
142
+ {
143
+ struct test_ksyms_btf_write_check * skel ;
144
+
145
+ skel = test_ksyms_btf_write_check__open_and_load ();
146
+ ASSERT_ERR_PTR (skel , "unexpected load of a prog writing to ksym memory\n" );
147
+
148
+ test_ksyms_btf_write_check__destroy (skel );
149
+ }
150
+
140
151
void test_ksyms_btf (void )
141
152
{
142
153
int percpu_datasec ;
@@ -167,4 +178,7 @@ void test_ksyms_btf(void)
167
178
168
179
if (test__start_subtest ("weak_ksyms_lskel" ))
169
180
test_weak_syms_lskel ();
181
+
182
+ if (test__start_subtest ("write_check" ))
183
+ test_write_check ();
170
184
}
Original file line number Diff line number Diff line change
1
+ // SPDX-License-Identifier: GPL-2.0
2
+ /* Copyright (c) 2021 Google */
3
+
4
+ #include "vmlinux.h"
5
+
6
+ #include <bpf/bpf_helpers.h>
7
+
8
+ extern const int bpf_prog_active __ksym ; /* int type global var. */
9
+
10
+ SEC ("raw_tp/sys_enter" )
11
+ int handler (const void * ctx )
12
+ {
13
+ int * active ;
14
+ __u32 cpu ;
15
+
16
+ cpu = bpf_get_smp_processor_id ();
17
+ active = (int * )bpf_per_cpu_ptr (& bpf_prog_active , cpu );
18
+ if (active ) {
19
+ /* Kernel memory obtained from bpf_{per,this}_cpu_ptr
20
+ * is read-only, should _not_ pass verification.
21
+ */
22
+ /* WRITE_ONCE */
23
+ * (volatile int * )active = -1 ;
24
+ }
25
+
26
+ return 0 ;
27
+ }
28
+
29
+ char _license [] SEC ("license" ) = "GPL" ;
You can’t perform that action at this time.
0 commit comments