Repository navigation
Commit 9150046
committed
Wire tap: a capture length the 6.6 verifier can bound; the matrix starts at 6.6
The first matrix run put the floor at 6.6, not 6.1: 6.1 refuses the wire
tap's TCX attach type at load, with zero instructions verified, and every
other object loads there. The socket tap's iov_iter reads are CO-RE
guarded, so its 6.4 note is for the build host only.
On 6.6 the wire tap was rejected inside emit(): "R4 invalid zero-sized
read: u64=[0,4094]" at bpf_skb_load_bytes. The size was guarded by
`cap && ...`, but a verifier before 6.9 does not narrow a register on the
`!= 0` branch, so it still saw a possible zero. Submit the empty record
first, then rebuild the bound by arithmetic the verifier does track:
((cap - 1) & CAP_MASK) + 1 is [1, CAP_MASK + 1] and an identity on the
range that reaches it; barrier_var keeps clang from folding it away.
Matrix: 6.6, 6.12, 6.18, 7.2 gate; bpf-next runs with continue-on-error.
On 7.3-rc4 the walk VM's bpf_loop callbacks cost 850k verifier
instructions against 14k on 6.12 and hit the 1M limit. That is worth
seeing on every run, but a moving target should not block a merge until
the change ships in a release. The local harness defaults to the same
spread.1 parent 241e169 commit 9150046
4 files changed
Lines changed: 47 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
34 | 37 | | |
35 | 38 | | |
36 | 39 | | |
| |||
50 | 53 | | |
51 | 54 | | |
52 | 55 | | |
53 | | - | |
54 | 56 | | |
55 | 57 | | |
| 58 | + | |
| 59 | + | |
56 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
57 | 66 | | |
| 67 | + | |
58 | 68 | | |
59 | 69 | | |
60 | 70 | | |
| |||
197 | 207 | | |
198 | 208 | | |
199 | 209 | | |
200 | | - | |
| 210 | + | |
201 | 211 | | |
202 | 212 | | |
203 | 213 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
467 | 467 | | |
468 | 468 | | |
469 | 469 | | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
477 | 484 | | |
478 | 485 | | |
479 | 486 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
211 | 222 | | |
212 | | - | |
213 | | - | |
| 223 | + | |
| 224 | + | |
214 | 225 | | |
215 | 226 | | |
216 | 227 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
0 commit comments