⬢ DragonFlyBSD Kernel Audit
DF-3092 / run.log
← back to finding ↓ download raw
=== DF-3092 build ===

=== phase A: 7-cluster append (claim: phantom allocation) ===
wrote /root/df3092.img: maxcluster=4109 (FAT16), BIG.TXT=4102 clusters (2..4103), 6 real free (4104..4109), 18 phantom-free (4110..4127)
avail before: 6 clusters x512B
write(3584) returned -1 errno=28 (No space left on device)
alive:  8:49AM  up 16 mins, 0 users, load averages: 0.00, 0.00, 0.00
size after A:  2100224 (was 2100224)
avail after A: 6
C1 pass: FAT entries 4110..4351 all zero (no phantom allocation ever reached the FAT)
C2 pass: all dir entries start within 2..4109
C3 pass: BIG.TXT chain ends at cluster 4103 (EOF), dir size=2100224
TAILCHECK: ALL PASS

=== phase B: 6-cluster append (exactly the real free tail) ===
wrote /root/df3092.img: maxcluster=4109 (FAT16), BIG.TXT=4102 clusters (2..4103), 6 real free (4104..4109), 18 phantom-free (4110..4127)
write(3072) returned 3072
size after B:  2103296 (expect 2103296)
avail after B: 0 (expect 0)

=== phase C: one more 512B cluster (claim says 4110 is 'free') ===
write(512) returned -1 errno=28 (No space left on device)
size after C:  2103296
alive:  8:49AM  up 16 mins, 0 users, load averages: 0.00, 0.00, 0.00

=== phase D: offline tailcheck (expect ALL PASS) ===
C1 pass: FAT entries 4110..4351 all zero (no phantom allocation ever reached the FAT)
C2 pass: all dir entries start within 2..4109
C3 pass: BIG.TXT chain ends at cluster 4109 (EOF), dir size=2103296
TAILCHECK: ALL PASS

RESULT: phantom clusters 4110..4127 were NEVER allocatable;
the fillinusemap() FULL_RUN pre-fill (msdosfs_fat.c:897-898)
marks them used, so chainlength() cannot overcount and
usemap_alloc() never sees cn > pm_maxcluster.  No panic path.