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

adw_idle_cmd_send: single RISC command mailbox shared across sim-lock, callout and lock-free ISR contexts without serialization β€” raced status word panics the kernel (or BDRs the wrong target); any chip wedge during timeout recovery ends in an unconditional panic after a 10-second interrupts-disabled spin

Summary

One shared LRAM mailbox (clear-STATUS/write-CMD/poll-STATUS) with no mutual exclusion across three caller domains: XPT_RESET under sim_mplock, adwtimeout under crit-only callouts (crit does not exclude other CPUs' sim-lock holders), and the lock-free ISR. A raced zeroing of IDLE_CMD_STATUS leaves the peer polling forever - 10s interrupts-disabled spin then panic; a torn PARAM/CMD interleave can device-reset the wrong target; even solo, a wedged chip during timeout recovery panics. Unpriv userspace drives it via queue saturation to a stalled target + concurrent resets. Hardware-gated. idle_lock + error-return fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4575 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1.1 KB 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-4575

Confirmed kernel references

Detail

Exploit chain

[]

Evidence (decisive lines)

One RISC idle-command mailbox shared across sim-lock, crit-only callout, and lock-free ISR callers with no serialization; unpriv userspace drives it via queue saturation to a stalled target + concurrent resets. idle_lock + error-return-instead-of-panic fix.

Verdict

not_run: requires adw(4) HBA + stalled/malicious SCSI target