DF-4252 / verdict.json
{ "finding_id": "DF-4252", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "mprsas_fw_work IR_CONFIGURATION_CHANGE_LIST case returns early at :330 when mpr_alloc_command fails, skipping both mprsas_startup_decrement (:455) and mprsas_fw_event_free (:780): the fw_event+event_data allocations leak and the startup refcount taken in mprsas_evt_handler (:170-174) never drops, so discovery completion can hang (simq stays frozen) until a forced drain; leak amplifies the very pool exhaustion that triggers it (DF-4015-family pattern, mpr side).", "exploit_chain": "", "evidence": "VERDICT.md refcount trace; build.log compile-validation.", "kernel_refs": [ "sys/dev/raid/mpr/mpr_sas_lsi.c:327", "sys/dev/raid/mpr/mpr_sas_lsi.c:455", "sys/dev/raid/mpr/mpr_sas_lsi.c:780", "sys/dev/raid/mpr/mpr_sas.c:204" ], "poc_changes": "n/a - pass-2 finding; trigger documentation written fresh (hardware-gated, no seed PoC existed)", "attempts": 1, "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": 130, "guest_dirty": 0, "build_cmd": "see build.sh / build.log (hardware absent; mpr fixes compile-validated on guest)", "run_cmd": "./run.sh (hardware-gating probe)", "code_hash": "3708db40389ed9322babbb72c804ea611cf0f586fd1d0924facfbcbe542cda82", "notes": "Error-path resource+refcount leak. | Status untested = target device absent on guest (contracts not_testable class).", "recommended_fix": "decrement startup refcount + free fw_event before early return", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "not_testable at runtime; compile-validated (decrement+free before return).", "fix_evidence": "build.log: patched module builds clean." } |