⬢ DragonFlyBSD Kernel Audit
DF-5321 / fix_run.log
← back to finding ↓ download raw
DF-5321 fix validation (fix.diff applied to the guest's /usr/src copy,
module rebuilt against the PATCHED production firewire.c, identical
triggers)

$ cd /usr/src && patch -p1 < /root/fix.diff
   10 hunks firewire.c + 1 hunk firewirereg.h, all applied cleanly
$ sh /root/df5321/build.sh        (fix_build.log)

--- mode 0 (DF-5322 leak check, also carried by this fix) --------------
$ sysctl kern.df5321_mode=0 kern.df5321_iters=5000
$ sysctl kern.df5321_fire=1
DF5322: 5000 split-transaction timeouts
DF5322: M_FW inuse delta = 0 objects, memuse delta = 0 bytes
DF5322: no significant leak (fixed kernel?)
   (baseline: delta = 5000 objects / 80000 bytes)

--- mode 1 (FW_ASYREQ scenario) ----------------------------------------
$ sysctl kern.df5321_mode=1 kern.df5321_iters=3000
$ sysctl kern.df5321_fire=1
       60.03 real
DF5321: mode 1 starting (3000 attempts, PRODUCTION firewire.c completion paths)
DF5321: mode1 done: attempts=3000 double-completions=0 act.hand-after-free=0 stale-stores-into-reused-fw_xfer=0
   (baseline: kernel panic on attempt #1)

--- mode 2 (production fw_asy_callback_free) ---------------------------
$ sysctl kern.df5321_mode=2 kern.df5321_iters=5000
$ sysctl kern.df5321_fire=1
        0.81 real
DF5321: mode 2 starting (5000 attempts, PRODUCTION firewire.c completion paths)
DF5321: mode2 SURVIVED 5000 attempts (baseline expects a double-free panic; a fixed kernel expects this)
   guest stays up (vm.sh status => up)

FIX STATUS: fixed  (baseline panics gone; counters zero; leak zero)