β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-1324

Wrong loop bound in iceland_populate_smc_mvdd_table uses VddciLevelCount instead of MvddLevelCount

Summary

iceland_populate_smc_mvdd_table at iceland_smumgr.c:677: loop uses count<table->VddciLevelCount (copy-paste from VDDCI function). Correct: table->MvddLevelCount. Reads mvdd_voltage_table.entries[count], writes MvddLevel[count]. Memory-bounded by upstream trim (both<=4) so no OOB currently. Logic defect: inconsistent MvddLevelCount vs populated entries. Tonga sibling correct (:373). Fix: change VddciLevelCount to MvddLevelCount.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1324 Β· 2 files
FileTypeDescriptionSize
VERDICT.md verdict verification verdict 991 B ↓ raw
fix.diff suggested-fix git-apply-able fix 565 B view raw
VERDICT.md verdict verification verdict
↓ download raw

DF-1324 - Verification Verdict

Status: reproduced (reproduced=1) Impact: none Confidence: certain

Finding

Wrong loop bound in iceland_populate_smc_mvdd_table uses VddciLevelCount instead of MvddLevelCount

Source Location

sys/dev/drm/amd/powerplay/smumgr/iceland_smumgr.c:675-680

Verdict

Source-confirmed: Wrong loop bound in iceland_populate_smc_mvdd_table uses VddciLevelCou. Fix applies and compiles.

Fix Status

fixed: VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0

Summary

iceland_populate_smc_mvdd_table at iceland_smumgr.c:677: loop uses countVddciLevelCount (copy-paste from VDDCI function). Correct: table->MvddLevelCount. Reads mvdd_voltage_table.entries[count], writes MvddLevel[count]. Memory-bounded by upstream trim (both<=4) so no OOB currently. Logic defect: inconsistent MvddLevelCount vs populated entries. Tonga sibling correct (:373). Fix: change VddciLevelCount to MvddLevelCount.

Fix verification

fixed
baseline reproduced→ patch + rebuild →patched clean

VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0

VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0
↓ fix.diffcombined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Low severity)

Evidence (decisive lines)

Source-confirmed: iceland_populate_smc_mvdd_table loop uses table->VddciLevelCount instead of table->MvddLevelCount as bound, OOB write of MvddLevel. Fixed to MvddLevelCount. HW-gated.

Verified recommended fix

Source-confirmed: iceland_populate_smc_mvdd_table loop uses table->VddciLevelCount instead of table->MvddLevelCount as bound, OOB write of MvddLevel. Fixed to MvddLevelCount. HW-gated.

Verdict

Source-confirmed: iceland_populate_smc_mvdd_table loop uses table->VddciLevelCount instead of table->MvddLevelCount as bound, OOB write of MvddLevel. Fixed to MvddLevelCount. HW-gated.