DF-4212 / verdict.json
{ "finding_id": "DF-4212", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "mpt_raid_attach takes MPT_LOCK only after mpt_spawn_raid_thread succeeds (mpt_raid.c:290), but the spawn-failure goto cleanup (283-287) reaches MPT_UNLOCK (315) on a lock never acquired -> DragonFly lockmgr panic LK_RELEASE: no lock held (kern_lock.c:768). The other error path (handler registration failure, 292-297) leaks the csa CCB allocated at 288. Both are attach-time error-path defects; hardware-gated (no MPT HBA on guest).", "exploit_chain": "", "evidence": "findings/poc/DF-4212/VERDICT.md, findings/poc/DF-4212/env.txt (guest pciconf: no triggering hardware), findings/poc/DF-4212/fix.diff", "kernel_refs": [ "sys/dev/disk/mpt/mpt_raid.c:283", "sys/dev/disk/mpt/mpt_raid.c:288", "sys/dev/disk/mpt/mpt_raid.c:290", "sys/dev/disk/mpt/mpt_raid.c:314", "sys/dev/disk/mpt/mpt.h:763", "sys/kern/kern_lock.c:768" ], "poc_changes": "no runnable PoC: hardware-gated path absent from the audit guest (env.txt)", "attempts": 0, "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64", "runtime_sec": 0, "guest_dirty": 0, "build_cmd": null, "run_cmd": null, "code_hash": null, "notes": "Trigger: kthread_create ENOMEM during mpt(4) attach (boot or kldload under memory pressure).", "recommended_fix": "return early on spawn failure (nothing to unwind); free csa on the register-failure path", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "diff authored and git-apply-verified against the read-only sys/ tree; runtime fix validation impossible without the triggering hardware on the QEMU guest", "fix_evidence": "findings/poc/DF-4212/fix.diff (git apply --check passed)" } |