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

SMBus block write transmits the command byte where the byte-count belongs β€” every Block Write is malformed on the wire

Summary

The count-issuing block sends '(u_char)cmd' - already transmitted by the preceding command block - instead of wcount: every block write puts CMD,CMD,DATA... on the bus with the real length never transmitted (SMBus 2.0 Block Write = ADDR,CMD,BYTECNT,DATA). Reached via ig4iic_smb_bwrite and the /dev/smbN SMB_BWRITE ioctl. Every ig4 block-write consumer silently corrupts; for the IPMI SSIF lineage every BMC-bound command would be malformed while the driver returns success. Wire-level source-proof (no ig4 model in QEMU - pm SMBus is ichsmb). Send-wcount fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-5385 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1.0 KB view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean
per-fix-DF-5385

Confirmed kernel references

Detail

Evidence (decisive lines)

wire-level source proof vs SMBus 2.0 spec + ig4_reg.h documented abort/flush semantics

Verified recommended fix

see finding markdown

Verdict

untested (hardware-gated: no Intel LPSS I2C model in QEMU; pm SMBus is ichsmb, ACPI-injected fakes fail the COMP_VER gate)