⬢ DragonFlyBSD Kernel Audit
DF-4120 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4120",
  "status": "inconclusive",
  "reproduced": 0,
  "impact": "none",
  "confidence": "likely",
  "verdict": "Arithmetic certain, field plausibility likely, runtime hardware-gated. cypress_populate_mclk_values second spread-spectrum division (cypress_dpm.c:566-567) divides by clk_s*625; clk_s (computed at :565 as reference_clock*5/(decoded_ref*ss.rate)) truncates to 0 whenever decoded_ref*ss.rate > reference_clock*5, turning :567 into a divide-by-zero (#DE kernel panic) even with ss.rate != 0 \u2014 a different expression and condition from known DF-1387 (rate==0 at :565). Inputs are VBIOS-controlled: ss.rate raw u16 usSpreadRateInKhz (radeon_atombios.c:1546), decoded_ref 1..~15 (rv740_get_decoded_reference_divider), reference_clock = mpll.reference_freq (10000 typical, 2700 on 27 MHz boards). Panic examples: (2700,2,6751), (10000,2,25001), (10000,1,50001). Reachable at DPM enable and every power-state change when mclk_ss + matching ASIC_INTERNAL_MEMORY_SS entry exist \u2014 same gating as accepted DF-1387. Expression byte-identical in upstream Linux (checked 2026-09-18).",
  "exploit_chain": "Crafted VBIOS ss.rate (25-50+ MHz range, physically implausible for real SS silicon, trivially craftable in an option-ROM/vBIOS image) on an evergreen-family card with memory-clock SS support -> #DE panic at radeon attach/state-switch.",
  "evidence": "VERDICT.md (arithmetic + worked examples); fix.diff (clk_s==0 bail-out); env.txt",
  "kernel_refs": [
    "sys/dev/drm/radeon/cypress_dpm.c:553",
    "sys/dev/drm/radeon/cypress_dpm.c:565",
    "sys/dev/drm/radeon/cypress_dpm.c:566",
    "sys/dev/drm/radeon/cypress_dpm.c:567",
    "sys/dev/drm/radeon/radeon_atombios.c:1546"
  ],
  "poc_changes": "No seed PoC; hardware-gated.",
  "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": 15,
  "guest_dirty": 0,
  "build_cmd": "n/a (hardware-gated)",
  "run_cmd": "n/a (hardware-gated)",
  "code_hash": "",
  "notes": "Sibling of known DF-1387 (lines 553-565, rate==0 form); this finding covers the clk_s==0 form of the SECOND division at :567 \u2014 outside DF-1387s cited range and condition. Family precedent: DF-1334/1376/1386/1387.",
  "recommended_fix": "Return -EINVAL when clk_s truncates to 0 between the two divisions (fix.diff); complements the DF-1387 rate==0 guard.",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "Diff authored; validation requires evergreen hardware absent from the audit guest.",
  "fix_evidence": "fix.diff"
}