~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/bpf/progs/verifier_div0.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0
  2 /* Converted from tools/testing/selftests/bpf/verifier/div0.c */
  3 
  4 #include <linux/bpf.h>
  5 #include <bpf/bpf_helpers.h>
  6 #include "bpf_misc.h"
  7 
  8 SEC("socket")
  9 __description("DIV32 by 0, zero check 1")
 10 __success __success_unpriv __retval(42)
 11 __naked void by_0_zero_check_1_1(void)
 12 {
 13         asm volatile ("                                 \
 14         w0 = 42;                                        \
 15         w1 = 0;                                         \
 16         w2 = 1;                                         \
 17         w2 /= w1;                                       \
 18         exit;                                           \
 19 "       ::: __clobber_all);
 20 }
 21 
 22 SEC("socket")
 23 __description("DIV32 by 0, zero check 2")
 24 __success __success_unpriv __retval(42)
 25 __naked void by_0_zero_check_2_1(void)
 26 {
 27         asm volatile ("                                 \
 28         w0 = 42;                                        \
 29         r1 = 0xffffffff00000000LL ll;                   \
 30         w2 = 1;                                         \
 31         w2 /= w1;                                       \
 32         exit;                                           \
 33 "       ::: __clobber_all);
 34 }
 35 
 36 SEC("socket")
 37 __description("DIV64 by 0, zero check")
 38 __success __success_unpriv __retval(42)
 39 __naked void div64_by_0_zero_check(void)
 40 {
 41         asm volatile ("                                 \
 42         w0 = 42;                                        \
 43         w1 = 0;                                         \
 44         w2 = 1;                                         \
 45         r2 /= r1;                                       \
 46         exit;                                           \
 47 "       ::: __clobber_all);
 48 }
 49 
 50 SEC("socket")
 51 __description("MOD32 by 0, zero check 1")
 52 __success __success_unpriv __retval(42)
 53 __naked void by_0_zero_check_1_2(void)
 54 {
 55         asm volatile ("                                 \
 56         w0 = 42;                                        \
 57         w1 = 0;                                         \
 58         w2 = 1;                                         \
 59         w2 %%= w1;                                      \
 60         exit;                                           \
 61 "       ::: __clobber_all);
 62 }
 63 
 64 SEC("socket")
 65 __description("MOD32 by 0, zero check 2")
 66 __success __success_unpriv __retval(42)
 67 __naked void by_0_zero_check_2_2(void)
 68 {
 69         asm volatile ("                                 \
 70         w0 = 42;                                        \
 71         r1 = 0xffffffff00000000LL ll;                   \
 72         w2 = 1;                                         \
 73         w2 %%= w1;                                      \
 74         exit;                                           \
 75 "       ::: __clobber_all);
 76 }
 77 
 78 SEC("socket")
 79 __description("MOD64 by 0, zero check")
 80 __success __success_unpriv __retval(42)
 81 __naked void mod64_by_0_zero_check(void)
 82 {
 83         asm volatile ("                                 \
 84         w0 = 42;                                        \
 85         w1 = 0;                                         \
 86         w2 = 1;                                         \
 87         r2 %%= r1;                                      \
 88         exit;                                           \
 89 "       ::: __clobber_all);
 90 }
 91 
 92 SEC("tc")
 93 __description("DIV32 by 0, zero check ok, cls")
 94 __success __retval(8)
 95 __naked void _0_zero_check_ok_cls_1(void)
 96 {
 97         asm volatile ("                                 \
 98         w0 = 42;                                        \
 99         w1 = 2;                                         \
100         w2 = 16;                                        \
101         w2 /= w1;                                       \
102         r0 = r2;                                        \
103         exit;                                           \
104 "       ::: __clobber_all);
105 }
106 
107 SEC("tc")
108 __description("DIV32 by 0, zero check 1, cls")
109 __success __retval(0)
110 __naked void _0_zero_check_1_cls_1(void)
111 {
112         asm volatile ("                                 \
113         w1 = 0;                                         \
114         w0 = 1;                                         \
115         w0 /= w1;                                       \
116         exit;                                           \
117 "       ::: __clobber_all);
118 }
119 
120 SEC("tc")
121 __description("DIV32 by 0, zero check 2, cls")
122 __success __retval(0)
123 __naked void _0_zero_check_2_cls_1(void)
124 {
125         asm volatile ("                                 \
126         r1 = 0xffffffff00000000LL ll;                   \
127         w0 = 1;                                         \
128         w0 /= w1;                                       \
129         exit;                                           \
130 "       ::: __clobber_all);
131 }
132 
133 SEC("tc")
134 __description("DIV64 by 0, zero check, cls")
135 __success __retval(0)
136 __naked void by_0_zero_check_cls(void)
137 {
138         asm volatile ("                                 \
139         w1 = 0;                                         \
140         w0 = 1;                                         \
141         r0 /= r1;                                       \
142         exit;                                           \
143 "       ::: __clobber_all);
144 }
145 
146 SEC("tc")
147 __description("MOD32 by 0, zero check ok, cls")
148 __success __retval(2)
149 __naked void _0_zero_check_ok_cls_2(void)
150 {
151         asm volatile ("                                 \
152         w0 = 42;                                        \
153         w1 = 3;                                         \
154         w2 = 5;                                         \
155         w2 %%= w1;                                      \
156         r0 = r2;                                        \
157         exit;                                           \
158 "       ::: __clobber_all);
159 }
160 
161 SEC("tc")
162 __description("MOD32 by 0, zero check 1, cls")
163 __success __retval(1)
164 __naked void _0_zero_check_1_cls_2(void)
165 {
166         asm volatile ("                                 \
167         w1 = 0;                                         \
168         w0 = 1;                                         \
169         w0 %%= w1;                                      \
170         exit;                                           \
171 "       ::: __clobber_all);
172 }
173 
174 SEC("tc")
175 __description("MOD32 by 0, zero check 2, cls")
176 __success __retval(1)
177 __naked void _0_zero_check_2_cls_2(void)
178 {
179         asm volatile ("                                 \
180         r1 = 0xffffffff00000000LL ll;                   \
181         w0 = 1;                                         \
182         w0 %%= w1;                                      \
183         exit;                                           \
184 "       ::: __clobber_all);
185 }
186 
187 SEC("tc")
188 __description("MOD64 by 0, zero check 1, cls")
189 __success __retval(2)
190 __naked void _0_zero_check_1_cls_3(void)
191 {
192         asm volatile ("                                 \
193         w1 = 0;                                         \
194         w0 = 2;                                         \
195         r0 %%= r1;                                      \
196         exit;                                           \
197 "       ::: __clobber_all);
198 }
199 
200 SEC("tc")
201 __description("MOD64 by 0, zero check 2, cls")
202 __success __retval(-1)
203 __naked void _0_zero_check_2_cls_3(void)
204 {
205         asm volatile ("                                 \
206         w1 = 0;                                         \
207         w0 = -1;                                        \
208         r0 %%= r1;                                      \
209         exit;                                           \
210 "       ::: __clobber_all);
211 }
212 
213 char _license[] SEC("license") = "GPL";
214 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php