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

usb_fifo_open() curr_cpd single-owner check is unlocked β€” concurrent opens of the same ugen endpoint bypass EBUSY and yield two live owners on one fifo

Summary

'we don't need any locks' NULL check at :701 vs locked publish at :736 with the f_open lock round-trip in between: two racing opens both pass, both run f_open/f_close lifecycles, curr_cpd clobbered by the last writer - the earlier cpd's dtor then skips close while both fds stay usable on one fifo. Defeats the single-owner invariant the fifo engine and FIOASYNC state depend on; distinct entry into the DF-5287 concurrent-setup sink plus owner clobbering and a leaked fifo when create's unlocked slot search races. Atomic check-and-set fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

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

Confirmed kernel references

Detail

Evidence (decisive lines)

static trace in finding markdown

Verified recommended fix

see finding markdown

Verdict

untested (Medium ms-window TOCTOU overlapping the verified DF-5287 sink / Info latent)