DF-4226 / verdict.json
{ "finding_id": "DF-4226", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Hardware-gated functional defect (no memory-safety impact, hence impact=none): radeon_legacy_tmds_int_commit (radeon_legacy_encoders.c:775/777) and radeon_legacy_tv_dac_commit (:1146/1148) call radeon_{atom,combios}_output_lock with true (LOCK) where the prepare/commit contract and all three sibling commit functions in the same file (lvds:169, primary_dac:578, tmds_ext:940) pass false (UNLOCK). After a DVI/TV modeset the output stays locked and later DPMS/modeset register programming is inhibited — display DoS until re-init, triggerable by a DRM master. Requires r100-r500 hardware; the QEMU guest has Bochs VGA and no DRM device, so no runtime test is possible or needed: the asymmetry is fully established from source.", "exploit_chain": "", "evidence": "VERDICT.md side-by-side of the five prepare/commit pairs in the file; fix.diff flips the four arguments to false, restoring parity with siblings and upstream Linux.", "kernel_refs": [ "sys/dev/drm/radeon/radeon_legacy_encoders.c:775", "sys/dev/drm/radeon/radeon_legacy_encoders.c:1146", "sys/dev/drm/radeon/radeon_legacy_encoders.c:169", "sys/dev/drm/radeon/radeon_legacy_encoders.c:940" ], "poc_changes": "n/a (source-level finding)", "attempts": 0, "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 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": "n/a", "run_cmd": "n/a", "code_hash": "", "notes": "Skipped per contract (Low severity, hardware-gated, no runnable PoC). Upstream Linux passes false in both commit functions.", "recommended_fix": "Pass false to radeon_{atom,combios}_output_lock in radeon_legacy_tmds_int_commit and radeon_legacy_tv_dac_commit (lines 775/777/1146/1148).", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "No radeon hardware on the guest; fix is a four-argument change restoring exact parity with the three correct sibling commit functions in the same file.", "fix_evidence": "fix.diff; source comparison in VERDICT.md" } |