β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
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)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4323 Β· 2 files
FileTypeDescriptionSize
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_testable
baseline 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)