{
 "finding_id": "DF-2939",
 "status": "not_reproduced",
 "reproduced": 0,
 "impact": "panic",
 "confidence": "likely",
 "verdict": "Line-accurate confirmation; no trigger surface on this guest. dev_pager_dealloc runs cdev_pg_dtor (device_pager.c:211) BEFORE taking dev_pager_mtx and unlinking (:213-215); old_dev_pager_dtor does KKASSERT(dev->si_object) then dev->si_object = NULL unlocked (:343); cdev_pager_allocate sets dev->si_object under the mutex (:146-149) - the clobber window is real. But the old pager is only used by legacy d_mmap devices, and the guest has none (only nvmm with .d_mmap = nommap; no DRM/vga). Window is a few instructions wide even where devices exist. Fix (move si_object bookkeeping under dev_pager_mtx after unlist, conditional on identity) compiled into the fix-all kernel.",
 "exploit_chain": "",
 "evidence": "source ordering: device_pager.c:211 vs :213-215 vs :146-149 vs :343",
 "kernel_refs": [
  "sys/vm/device_pager.c:211",
  "sys/vm/device_pager.c:146",
  "sys/vm/device_pager.c:343"
 ],
 "poc_changes": "no legacy d_mmap device present on guest",
 "attempts": 0,
 "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:04 UTC 2026     root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC  x86_64",
 "runtime_sec": 0,
 "guest_dirty": 0,
 "build_cmd": "(none)",
 "run_cmd": "(none)",
 "code_hash": "",
 "notes": "INVARIANTS-only KKASSERT panic ceiling; production behavior benign bookkeeping loss",
 "recommended_fix": "si_object bookkeeping under dev_pager_mtx after unlist (conditional == object clear)",
 "fix_status": "not_testable",
 "fix_verdict": "compile-validated in fix-all kernel"
}
