DF-4323
pcm_unregister() can complete while dsp_clone() sleeps in PCM_WAIT (which holds no SD_F_BUSY), leaving the woken handler to run snd_clone_alloc(NULL)/snd_clone_disabled on freed state and PCM_RELEASE on the freed d->lock β NULL-deref / lock use-after-free panic
Summary
dsp_clone validates under PCM_LOCK and only then does PCM_WAIT/ACQUIRE. A thread parked in PCM_WAIT holds no SD_F_BUSY, so pcm_unregister runs to completion concurrently: REGISTERED cleared, clones destroyed and NULLed, lock freed, cv destroyed. The broadcast wakes the parked dsp_clone which then calls snd_clone_alloc(NULL) (NULL-deref) or at minimum PCM_RELEASE_QUICK on the freed lock. Requires root detach racing an unprivileged open. Re-validate-after-wake fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-4323 Β· 2 files| File | Type | Description | Size | |
|---|---|---|---|---|
| README.md | file | 137 B | β raw | |
| verdict.json | file | 690 B | view raw |
README.md
file
β download raw
DF-4323
Hardware-gated finding - PoC skipped per contract. Source citations in the pass-2 result block.
Fix: see pass-2 result block
Fix verification
not_testablebaseline noβ patch + rebuild βpatched clean
see pass-2 result block
source-only
per-fix-DF-4323
Confirmed kernel references
Detail
Exploit chain
[]
Evidence (decisive lines)
source-only; full path:line trace in pass-2 result block
Verdict
source-verified; hardware-gated (no ath NIC / no runtime detach on audit guest)
No comments yet.