fix(v4): the build refuses an Artemis cap its 32-bit block numbers cannot hold (#182)
sk_v4_grow.c's dev_rw4k computes 1 KiB block numbers as (uint32_t)devblock * 4, which wraps past 4 TiB; Artemis is capped at 256 GiB (STICK_ARTEMIS_CAP_GIB, kernel/Makefile), so it is latent -- but nothing said so where the cast is. Now a compile-time check there (the C99 negative-array pattern the tree uses): a cap past 4 TiB stops the build, and a cap not defined at all is an #error, not a skipped check. gpt.c's casts are bounded by the disk's own size, itself a 32-bit count of 1 KiB blocks, checked before each: each now says so. kernel/tests' check_cap, seen to fail first (a 4096 GiB cap built); now 3 checks, 0 failures -- 256 GiB builds, 4096 GiB and none refused. Built for amd64, aarch64, riscv64. The plan's increments 2 and 3 marked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
@@ -29,9 +29,12 @@ fails half-way, a stop that spins) is still tested first and seen to fail. v4 ha
|
||||
entry out of range past `max` (#180); the first write failing and a later one failing (#168).
|
||||
Seen to fail against `gpt.c` as it was before #168 and #180 (`54311be1~1`): 12 checks, 4
|
||||
failures -- each of the two defects caught. Now: 0 failures.
|
||||
- [ ] 2. The xHCI configuration-descriptor walk moved out of the event loop, then #170 and #171
|
||||
tested first and fixed.
|
||||
- [ ] 3. #176 (seeds wiped on every exit), #177 (the fatal stops halt), #178 (the slot array) --
|
||||
each with what it needs moved or faked.
|
||||
- [x] 2. The xHCI configuration-descriptor walk moved out of the event loop (`usb_config.c`,
|
||||
`test_usb_config`), then #170 and #171 tested first (10 failures against the old decision)
|
||||
and fixed.
|
||||
- [ ] 3. #176 (seeds wiped on every exit) -- the approach to rule. [x] #177 (the fatal stops halt:
|
||||
`sk_v4_stop.c`, `test_sk_v4_stop`, a spin seen failing). [x] #178 (the slot array:
|
||||
`sk_v4_slots.c`, `test_sk_v4_slots`, 4 failures against the old allocation). [x] #182 (the
|
||||
cap checked at compile time: `check_cap`, a 4 TiB cap seen building before).
|
||||
- [ ] 4. #179 once #187 is ruled (the block layer's header read).
|
||||
- [ ] 5. To rule: the kernel tests as a protocol stage and in the gate.
|
||||
|
||||
Reference in New Issue
Block a user