DF-0812 / fix_run.log
=== Phase 8: Fix Validation === --- BEFORE (unpatched kernel #0, baseline) --- Image: HAMMER with 640 REDO records patched (redo_data_bytes=0x7FFFFFFF) Mount result: FATAL TRAP 12 (page fault in memmove during REDO recovery) boot.log excerpt (#0): HAMMER(TEST) recovery check seqno=0010028e HAMMER(TEST) recovery undo 300000000004b548-300000000004cf48 (6656 bytes)(RW) HAMMER(TEST) Found REDO_SYNC 3000000000000000 HAMMER(TEST) recovery redo 300000000004b548-300000000004cf48 (6656 bytes)(RW) HAMMER(TEST) Find extended redo 3000000000000000, 308552 extbytes Fatal trap 12: page fault while in kernel mode fault virtual address = 0xfffff8007657a000 fault code = supervisor read data, page not present Stopped at memmove+0x10a: repe movsq (%rsi),%es:(%rdi) --- AFTER (patched kernel #1, fix.diff applied) --- Image: Same HAMMER image with same 640 REDO records patched (redo_data_bytes=0x7FFFFFFF) Mount result: SUCCESS (MOUNT_EXIT=0, guest alive, no panic) boot.log excerpt (#1): HAMMER(TEST) recovery check seqno=0010028e HAMMER(TEST) recovery undo 300000000004b548-300000000004cf48 (6656 bytes)(RW) HAMMER(TEST) Found REDO_SYNC 3000000000000000 HAMMER(TEST) recovery redo 300000000004b548-300000000004cf48 (6656 bytes)(RW) HAMMER(TEST) Find extended redo 3000000000000000, 308552 extbytes HAMMER(TEST) recovery complete <-- recovery completes without panic MOUNT_EXIT=0 <-- mount succeeds GUEST ALIVE: Sun Jul 5 20:37:59 UTC 2026 The fix validates redo_data_bytes against the record capacity before vn_rdwr, mirroring the UNDO path. Corrupt REDO records are now rejected with a "Corrupt REDO record" message and the mount proceeds normally. Patched kernel: DragonFly 6.5-DEVELOPMENT #1: Sun Jul 5 20:29:37 UTC 2026 SHA256 (/boot/kernel/kernel) = 2201a08916929ab3e9f4044a266825c16b55ae960423c0e17ec4600289274fc9