hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/tools/testing/selftests/bpf/verifier/bounds_mix_sign_unsign.c
....@@ -1,13 +1,14 @@
11 {
22 "bounds checks mixing signed and unsigned, positive bounds",
33 .insns = {
4
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
5
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
46 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
57 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
68 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
79 BPF_LD_MAP_FD(BPF_REG_1, 0),
810 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
9
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
10
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
11
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
1112 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
1213 BPF_MOV64_IMM(BPF_REG_2, 2),
1314 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 3),
....@@ -17,20 +18,21 @@
1718 BPF_MOV64_IMM(BPF_REG_0, 0),
1819 BPF_EXIT_INSN(),
1920 },
20
- .fixup_map_hash_8b = { 3 },
21
+ .fixup_map_hash_8b = { 5 },
2122 .errstr = "unbounded min value",
2223 .result = REJECT,
2324 },
2425 {
2526 "bounds checks mixing signed and unsigned",
2627 .insns = {
28
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
29
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
2730 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
2831 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
2932 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
3033 BPF_LD_MAP_FD(BPF_REG_1, 0),
3134 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
32
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
33
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
35
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
3436 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
3537 BPF_MOV64_IMM(BPF_REG_2, -1),
3638 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 3),
....@@ -40,20 +42,21 @@
4042 BPF_MOV64_IMM(BPF_REG_0, 0),
4143 BPF_EXIT_INSN(),
4244 },
43
- .fixup_map_hash_8b = { 3 },
45
+ .fixup_map_hash_8b = { 5 },
4446 .errstr = "unbounded min value",
4547 .result = REJECT,
4648 },
4749 {
4850 "bounds checks mixing signed and unsigned, variant 2",
4951 .insns = {
52
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
53
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
5054 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5155 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5256 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5357 BPF_LD_MAP_FD(BPF_REG_1, 0),
5458 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
55
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
56
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
59
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
5760 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5861 BPF_MOV64_IMM(BPF_REG_2, -1),
5962 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 5),
....@@ -65,20 +68,21 @@
6568 BPF_MOV64_IMM(BPF_REG_0, 0),
6669 BPF_EXIT_INSN(),
6770 },
68
- .fixup_map_hash_8b = { 3 },
71
+ .fixup_map_hash_8b = { 5 },
6972 .errstr = "unbounded min value",
7073 .result = REJECT,
7174 },
7275 {
7376 "bounds checks mixing signed and unsigned, variant 3",
7477 .insns = {
78
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
79
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
7580 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
7681 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
7782 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
7883 BPF_LD_MAP_FD(BPF_REG_1, 0),
7984 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
80
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
81
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
85
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
8286 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
8387 BPF_MOV64_IMM(BPF_REG_2, -1),
8488 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 4),
....@@ -89,20 +93,21 @@
8993 BPF_MOV64_IMM(BPF_REG_0, 0),
9094 BPF_EXIT_INSN(),
9195 },
92
- .fixup_map_hash_8b = { 3 },
96
+ .fixup_map_hash_8b = { 5 },
9397 .errstr = "unbounded min value",
9498 .result = REJECT,
9599 },
96100 {
97101 "bounds checks mixing signed and unsigned, variant 4",
98102 .insns = {
103
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
104
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
99105 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
100106 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
101107 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
102108 BPF_LD_MAP_FD(BPF_REG_1, 0),
103109 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
104
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
105
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
110
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
106111 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
107112 BPF_MOV64_IMM(BPF_REG_2, 1),
108113 BPF_ALU64_REG(BPF_AND, BPF_REG_1, BPF_REG_2),
....@@ -112,19 +117,20 @@
112117 BPF_MOV64_IMM(BPF_REG_0, 0),
113118 BPF_EXIT_INSN(),
114119 },
115
- .fixup_map_hash_8b = { 3 },
120
+ .fixup_map_hash_8b = { 5 },
116121 .result = ACCEPT,
117122 },
118123 {
119124 "bounds checks mixing signed and unsigned, variant 5",
120125 .insns = {
126
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
127
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
121128 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
122129 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
123130 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
124131 BPF_LD_MAP_FD(BPF_REG_1, 0),
125132 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
126
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
127
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
133
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
128134 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
129135 BPF_MOV64_IMM(BPF_REG_2, -1),
130136 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 5),
....@@ -135,17 +141,20 @@
135141 BPF_MOV64_IMM(BPF_REG_0, 0),
136142 BPF_EXIT_INSN(),
137143 },
138
- .fixup_map_hash_8b = { 3 },
144
+ .fixup_map_hash_8b = { 5 },
139145 .errstr = "unbounded min value",
140146 .result = REJECT,
141147 },
142148 {
143149 "bounds checks mixing signed and unsigned, variant 6",
144150 .insns = {
151
+ BPF_MOV64_REG(BPF_REG_9, BPF_REG_1),
152
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
153
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
154
+ BPF_MOV64_REG(BPF_REG_1, BPF_REG_9),
145155 BPF_MOV64_IMM(BPF_REG_2, 0),
146156 BPF_MOV64_REG(BPF_REG_3, BPF_REG_10),
147157 BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -512),
148
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
149158 BPF_LDX_MEM(BPF_DW, BPF_REG_4, BPF_REG_10, -16),
150159 BPF_MOV64_IMM(BPF_REG_6, -1),
151160 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_6, 5),
....@@ -163,13 +172,14 @@
163172 {
164173 "bounds checks mixing signed and unsigned, variant 7",
165174 .insns = {
175
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
176
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
166177 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
167178 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
168179 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
169180 BPF_LD_MAP_FD(BPF_REG_1, 0),
170181 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
171
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
172
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
182
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
173183 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
174184 BPF_MOV64_IMM(BPF_REG_2, 1024 * 1024 * 1024),
175185 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 3),
....@@ -179,19 +189,20 @@
179189 BPF_MOV64_IMM(BPF_REG_0, 0),
180190 BPF_EXIT_INSN(),
181191 },
182
- .fixup_map_hash_8b = { 3 },
192
+ .fixup_map_hash_8b = { 5 },
183193 .result = ACCEPT,
184194 },
185195 {
186196 "bounds checks mixing signed and unsigned, variant 8",
187197 .insns = {
198
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
199
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
188200 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
189201 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
190202 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
191203 BPF_LD_MAP_FD(BPF_REG_1, 0),
192204 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
193
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
194
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
205
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
195206 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
196207 BPF_MOV64_IMM(BPF_REG_2, -1),
197208 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
....@@ -203,20 +214,21 @@
203214 BPF_MOV64_IMM(BPF_REG_0, 0),
204215 BPF_EXIT_INSN(),
205216 },
206
- .fixup_map_hash_8b = { 3 },
217
+ .fixup_map_hash_8b = { 5 },
207218 .errstr = "unbounded min value",
208219 .result = REJECT,
209220 },
210221 {
211222 "bounds checks mixing signed and unsigned, variant 9",
212223 .insns = {
224
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
225
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
213226 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
214227 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
215228 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
216229 BPF_LD_MAP_FD(BPF_REG_1, 0),
217230 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
218
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),
219
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
231
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
220232 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
221233 BPF_LD_IMM64(BPF_REG_2, -9223372036854775808ULL),
222234 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
....@@ -228,19 +240,20 @@
228240 BPF_MOV64_IMM(BPF_REG_0, 0),
229241 BPF_EXIT_INSN(),
230242 },
231
- .fixup_map_hash_8b = { 3 },
243
+ .fixup_map_hash_8b = { 5 },
232244 .result = ACCEPT,
233245 },
234246 {
235247 "bounds checks mixing signed and unsigned, variant 10",
236248 .insns = {
249
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
250
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
237251 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
238252 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
239253 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
240254 BPF_LD_MAP_FD(BPF_REG_1, 0),
241255 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
242
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
243
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
256
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
244257 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
245258 BPF_MOV64_IMM(BPF_REG_2, 0),
246259 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
....@@ -252,20 +265,21 @@
252265 BPF_MOV64_IMM(BPF_REG_0, 0),
253266 BPF_EXIT_INSN(),
254267 },
255
- .fixup_map_hash_8b = { 3 },
268
+ .fixup_map_hash_8b = { 5 },
256269 .errstr = "unbounded min value",
257270 .result = REJECT,
258271 },
259272 {
260273 "bounds checks mixing signed and unsigned, variant 11",
261274 .insns = {
275
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
276
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
262277 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
263278 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
264279 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
265280 BPF_LD_MAP_FD(BPF_REG_1, 0),
266281 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
267
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
268
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
282
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
269283 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
270284 BPF_MOV64_IMM(BPF_REG_2, -1),
271285 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
....@@ -278,20 +292,21 @@
278292 BPF_MOV64_IMM(BPF_REG_0, 0),
279293 BPF_EXIT_INSN(),
280294 },
281
- .fixup_map_hash_8b = { 3 },
295
+ .fixup_map_hash_8b = { 5 },
282296 .errstr = "unbounded min value",
283297 .result = REJECT,
284298 },
285299 {
286300 "bounds checks mixing signed and unsigned, variant 12",
287301 .insns = {
302
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
303
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
288304 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
289305 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
290306 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
291307 BPF_LD_MAP_FD(BPF_REG_1, 0),
292308 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
293
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
294
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
309
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
295310 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
296311 BPF_MOV64_IMM(BPF_REG_2, -6),
297312 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
....@@ -303,20 +318,21 @@
303318 BPF_MOV64_IMM(BPF_REG_0, 0),
304319 BPF_EXIT_INSN(),
305320 },
306
- .fixup_map_hash_8b = { 3 },
321
+ .fixup_map_hash_8b = { 5 },
307322 .errstr = "unbounded min value",
308323 .result = REJECT,
309324 },
310325 {
311326 "bounds checks mixing signed and unsigned, variant 13",
312327 .insns = {
328
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
329
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
313330 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
314331 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
315332 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
316333 BPF_LD_MAP_FD(BPF_REG_1, 0),
317334 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
318
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
319
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
335
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 5),
320336 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
321337 BPF_MOV64_IMM(BPF_REG_2, 2),
322338 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
....@@ -331,7 +347,7 @@
331347 BPF_MOV64_IMM(BPF_REG_0, 0),
332348 BPF_EXIT_INSN(),
333349 },
334
- .fixup_map_hash_8b = { 3 },
350
+ .fixup_map_hash_8b = { 5 },
335351 .errstr = "unbounded min value",
336352 .result = REJECT,
337353 },
....@@ -340,13 +356,14 @@
340356 .insns = {
341357 BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
342358 offsetof(struct __sk_buff, mark)),
359
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
360
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
343361 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
344362 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
345363 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
346364 BPF_LD_MAP_FD(BPF_REG_1, 0),
347365 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
348
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
349
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
366
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
350367 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
351368 BPF_MOV64_IMM(BPF_REG_2, -1),
352369 BPF_MOV64_IMM(BPF_REG_8, 2),
....@@ -360,20 +377,21 @@
360377 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, -3),
361378 BPF_JMP_IMM(BPF_JA, 0, 0, -7),
362379 },
363
- .fixup_map_hash_8b = { 4 },
380
+ .fixup_map_hash_8b = { 6 },
364381 .errstr = "unbounded min value",
365382 .result = REJECT,
366383 },
367384 {
368385 "bounds checks mixing signed and unsigned, variant 15",
369386 .insns = {
387
+ BPF_EMIT_CALL(BPF_FUNC_ktime_get_ns),
388
+ BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -16),
370389 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
371390 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
372391 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
373392 BPF_LD_MAP_FD(BPF_REG_1, 0),
374393 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
375
- BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
376
- BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
394
+ BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 3),
377395 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
378396 BPF_MOV64_IMM(BPF_REG_2, -6),
379397 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
....@@ -387,7 +405,7 @@
387405 BPF_MOV64_IMM(BPF_REG_0, 0),
388406 BPF_EXIT_INSN(),
389407 },
390
- .fixup_map_hash_8b = { 3 },
408
+ .fixup_map_hash_8b = { 5 },
391409 .errstr = "unbounded min value",
392410 .result = REJECT,
393411 },