DF-3140 / fix_run.log
# 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.