DF-4214 / verdict.json
{ "finding_id": "DF-4214", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "mpt_reply_handlers[] is global and registration idempotent across controllers (mpt.c:417-426) but mpt_raid_detach deregisters unconditionally (mpt_raid.c:338-340). With >=2 mpt RAID controllers, detaching one clears the shared handler slot; the survivors RAID-action replies then hit mpt_default_reply_handler (mpt.c:480-495) which never completes or frees the request -> requests pinned on request_pending_list, 2s busy-poll timeouts, pool exhaustion and non-interruptible mpt_get_request sleeps wedging the RAID thread and sysctl writers.", "exploit_chain": "", "evidence": "findings/poc/DF-4214/VERDICT.md, findings/poc/DF-4214/env.txt (guest pciconf: no triggering hardware), findings/poc/DF-4214/fix.diff", "kernel_refs": [ "sys/dev/disk/mpt/mpt_raid.c:135", "sys/dev/disk/mpt/mpt_raid.c:291", "sys/dev/disk/mpt/mpt_raid.c:338", "sys/dev/disk/mpt/mpt.c:119", "sys/dev/disk/mpt/mpt.c:423", "sys/dev/disk/mpt/mpt.c:466", "sys/dev/disk/mpt/mpt.c:480" ], "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": "Needs two MPT HBAs + detach of one + RAID resync activity on the other. Severity Low (unusual config), mechanism source-certain.", "recommended_fix": "refcount the shared registration (raid_handler_refs) and deregister only on last detach", "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-4214/fix.diff (git apply --check passed)" } |