⬢ DragonFlyBSD Kernel Audit
DF-3140 / fix_run.log
← back to finding ↓ download raw
# DF-3140 fix validation — patched kernel (#2, fix.diff applied)
# Baseline (stock #0): 1st ftruncate -> error (buffer leaked);
# 2nd ftruncate -> panic 'lockmgr: locking against myself'
# (lockmgr_exclusive <- getblk <- breadnx <- hpfs_breadstruct <-
#  hpfs_truncatealblk), guest dead at db>.
# Patched, identical image + trigger:
DF3140 trunc: 1st ftruncate(512)...
DF3140 trunc: 1st rc=-1 (buffer leaked)
DF3140 trunc: 2nd ftruncate(512)...
DF3140 trunc: 2nd rc=-1 (UNEXPECTED - no hang)
RC=0
GUEST_ALIVE_NO_PANIC
hpfs_breadstruct: MAGIC DOESN'T MATCH (0x00000000 != 0x37e40aae)
hpfs_breadstruct: MAGIC DOESN'T MATCH (0x00000000 != 0x37e40aae)
UMOUNT_OK
# => the sibling-read error path now brelse()s bp (fix.diff); the 2nd
#    ftruncate re-breads cleanly, returns the original error, NO panic.
#    ('UNEXPECTED - no hang' is the poc's baseline-expectation string;
#     returning rc=-1 is the fixed behavior.)  fix_status: fixed.