DF-2534 baseline evidence (kernel #2 Mon Oct 19 20:55:04, INVARIANTS, verbatim xdisk.c)

=== [1] UAF-read hammer: real xa_size vs real xa_terminate_check (12 s) ===
DF2534-RACE: === DF-2534: real xa_size (cpu0) vs real xa_terminate_check (cpu1) for 12 s ===
DF2534-RACE: *** UAF READ CAPTURED (#1): real xa_size dereferenced FREED-then-REUSED softc through the stale si_drv1 pointer (result=0x00c0ffee00df2534)
DF2534-RACE: *** UAF READ CAPTURED (#2): real xa_size dereferenced FREED-then-REUSED softc through the stale si_drv1 pointer (result=0x00c0ffee00df2534)
DF2534-RACE: *** UAF READ CAPTURED (#3): real xa_size dereferenced FREED-then-REUSED softc through the stale si_drv1 pointer (result=0x00c0ffee00df2534)
login: DF2534-RACE: reader xa_size iterations: 157024256 (ENXIO/NULL path: 151101622)
DF2534-RACE: terminator terminate_check iterations: 51550501 (same-address reuse: 51550501, other: 0)
DF2534-RACE: UAF READS CAPTURED (stale deref saw 0xC0FFEE00DF2534 written AFTER the free): 664
DF2534-RACE: USE-AFTER-FREE READ CONFIRMED in the real xa_size
DF2534-RACE: done

=== [2] xa_strategy NULL deref (fabricated post-drain state; see panic.txt) ===
login: DF2534-S: === DF-2534: xa_strategy with si_drv1 == NULL (xdisk.c:801,805) ===
DF2534-S: calling real xa_strategy: xdisk.c:801 loads sc=NULL, :805 devstat_start_transaction(&sc->stats) derefs ~NULL+offset -> kernel page fault
Fatal user address access from kernel mode from sysctl at ffffffff806928fa


Fatal trap 12: page fault while in kernel mode
cpuid = 4; lapic id = 4
fault virtual address	= 0x90
fault code		= supervisor write data, page not present
instruction pointer	= 0x8:0xffffffff806928fa
stack pointer	        = 0x10:0xfffff80117ab3720
frame pointer	        = 0x10:0xfffff80117ab3798
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, long 0, def32 0, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 820
current thread          = pri 6 
kernel: type 12 trap, code=2

CPU4 stopping CPUs: 0x0000002f
 stopped
Stopped at      devstat_start_transaction+0xa:  lock xaddl      %eax,0x58(%rdi)
db> 

=== [3] same triggers after fix.diff (kernel #3 Mon Oct 19 21:13:06) ===
DF2534-S: === DF-2534: xa_strategy with si_drv1 == NULL (xdisk.c:801,805) ===
DF2534-S: calling real xa_strategy: xdisk.c:801 loads sc=NULL, :805 devstat_start_transaction(&sc->stats) derefs ~NULL+offset -> kernel page fault
DF2534-S: harness bio_done fired (bio completed with b_error=6 b_flags=0x800)
DF2534-S: xa_strategy returned 0 without faulting (fixed?) bio_done=6
DF2534-S: done
DF2534-RACE: === DF-2534: real xa_size (cpu0) vs real xa_terminate_check (cpu1) for 12 s ===
DF2534-RACE: reader xa_size iterations: 82313216 (ENXIO/NULL path: 82313216)
DF2534-RACE: terminator terminate_check iterations: 30146560 (same-address reuse: 30146560, other: 0)
DF2534-RACE: UAF READS CAPTURED (stale deref saw 0xC0FFEE00DF2534 written AFTER the free): 0
DF2534-RACE: no stale read observed this run (see VERDICT.md)
DF2534-RACE: done
