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)
PoC verification
Evidence pack
findings/poc/DF-5309 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 926 B | view raw |
Fix verification
not_testablebaseline 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)
No comments yet.