DF-5529
urio_open: WRITE-stall flag updated without sc_lock, asymmetric with the locked READ path
Summary
The FWRITE branch sets sc_flags |= URIO_FLAG_WRITE_STALL unlocked while the FREAD branch ten lines above wraps the identical update in sc_lock - violating the file's own protocol since the callbacks that clear the bit run under sc_lock. Impact analysis shows hardening-only: concurrent open writers OR distinct monotone bits and the clearing callbacks cannot execute for a mid-open fifo - worst case one spurious/missed CLEAR_FEATURE(ENDPOINT_HALT). Inherited verbatim from FreeBSD r246128. Mirror-the-FREAD-locking fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-5529 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 948 B | view raw |
Fix verification
not_testablebaseline noβ patch + rebuild βpatched clean
per-fix-DF-5529
Confirmed kernel references
Detail
Evidence (decisive lines)
static lock-protocol asymmetry trace urio.c:394-406
Verified recommended fix
wrap the FWRITE flag update in sc_lock
Verdict
untested (Info hardening; needs Rio VID:PID hardware; robustness wart only)
No comments yet.