DF-4292 / verdict.json
{ "finding_id": "DF-4292", "status": "inconclusive", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "atomctrl_get_smc_sclk_range_table() (ppatomctrl.c:1361-1386) dereferences psmu_info->ucSclkEntryNum at :1374 without checking the smu_atom_get_data_table() result (smu_helper.c:660-673 returns NULL when the VBIOS master data table lacks SMU_Info; the atom parser at amdgpu/atom.c:1384-1403 validates nothing). Callers vegam_smumgr.c:677 and polaris10_smumgr.c:807 run this during SMU backend init at driver attach, so a VEGAM/Polaris VBIOS without SMU_Info yields a Fatal trap 12 NULL-deref kernel panic at boot/module-load (CWE-476). Distinct from DF-1496 (the ucSclkEntryNum count overflow in the same function, which requires the table to exist): this is the missing table-pointer guard \u2014 every sibling getter in the file NULL-checks (:494, :682, :1228, :1400, :1492). Severity Low (companion guard to the already-filed worse defect). Not runnable on this guest (no AMD dGPU \u2014 env.txt); trace-certain.", "exploit_chain": "", "evidence": "VERDICT.md; README.md; fix.diff (NULL guard); env.txt", "kernel_refs": [ "sys/dev/drm/amd/powerplay/hwmgr/ppatomctrl.c:1374", "sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c:677", "sys/dev/drm/amd/powerplay/smumgr/polaris10_smumgr.c:807" ], "poc_changes": "n/a \u2014 no AMD dGPU on guest; code-trace evidence pack", "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": "", "run_cmd": "", "notes": "Hardware-absent case (DF-1497/1498 precedent). Low: same-function companion guard to DF-1496.", "recommended_fix": "NULL-check psmu_info in atomctrl_get_smc_sclk_range_table and return -1", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "Baseline behavior not reproducible on this guest (no AMD dGPU) -> no fixed-kernel build possible. fix.diff authored from trace.", "fix_evidence": "findings/poc/DF-4292/fix.diff (not applied to sys/; authored post-verification from line-accurate trace)" } |