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

adw_init_chip restores the saved BIOS image to the wrong LRAM base (addr + ADW_MC_BIOSLEN instead of addr + ADW_MC_BIOSMEM): 16-byte-shifted restore smears BIOS bytes over microcode variables 0x9C/0x9E and leaves 0x40-0x4F clobbered

Summary

The save loop reads ADW_MC_BIOSMEM+addr (0x40-0x8F) but the restore writes ADW_MC_BIOSLEN+addr (0x50-0x9F) - a +0x10 shifted restore: bytes land on the microcode's WDTR_ABLE/SDTR_ABLE (never rewritten afterward) while 0x40-0x4F keeps firmware bytes. Chip-internal negotiation misbehavior on the EEPROM-checksum-failed corner path; no host memory impact. Same-constant fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4574 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1018 B view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean

not_testable: hardware absent from guest

fix in finding markdown
per-fix-DF-4574

Confirmed kernel references

Detail

Exploit chain

[]

Evidence (decisive lines)

Restore loop uses ADW_MC_BIOSLEN (a length) as the base where the save loop used ADW_MC_BIOSMEM - +0x10 shifted restore smears over microcode vars. Same-constant fix.

Verdict

not_run: requires AdvanSys card + failed EEPROM checksum