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

Unsynchronized check-then-set of i2c_hw_buffer_in_use plus clear-before-release lets concurrent I2C acquisitions jointly drive the single shared DCE80 DC_I2C engine β€” interleaved single-instance MMIO and per-engine tracking divergence from the shared 144-byte HW data FIFO (dce80 twin of DF-5035/DF-4878; the DAL2 mutex was dropped in the port)

Summary

The flag is set only AFTER engine->acquire completes (a us-scale window) and cleared BEFORE the shared HW release - two DDC lines can both hold the single DC_I2C engine, corrupting DDC/EDID data and wedging the engine. Kernel memory stays in-bounds (transaction index capped, byte-at-a-time MMIO) - data-integrity + functional DoS. Hardware-gated (DCE80/CIK absent from guest). Atomic test-and-set + clear-after-release fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

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

Confirmed kernel references

Detail

Evidence (decisive lines)

code-trace proof in finding markdown (path:line)

Verified recommended fix

see finding markdown

Verdict

untested (Low/Info hardening; no unprivileged trigger or hardware-gated)