diff options
| author | ShengYi Hung <aokblast@FreeBSD.org> | 2026-05-15 08:43:47 +0000 |
|---|---|---|
| committer | ShengYi Hung <aokblast@FreeBSD.org> | 2026-05-15 14:52:48 +0000 |
| commit | 776584319fb4d66cdb1c2f91bed154dfe6a74e5e (patch) | |
| tree | c139eb77f71ff40bd0458d6d839115f05eac3c62 | |
| parent | bcd50fe5c3c6e70c710e13378999814e9df43d3c (diff) | |
| -rw-r--r-- | sys/dev/sound/pcm/dsp.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index 797bfba81023..7bc1decc283b 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -1877,24 +1877,25 @@ dsp_poll(struct cdev *i_dev, int events, struct thread *td) ret = 0; - dsp_lock_chans(priv, FREAD | FWRITE); wrch = priv->wrch; rdch = priv->rdch; if (wrch != NULL && !(wrch->flags & CHN_F_DEAD)) { + CHN_LOCK(wrch); e = (events & (POLLOUT | POLLWRNORM)); if (e) ret |= chn_poll(wrch, e, td); + CHN_UNLOCK(wrch); } if (rdch != NULL && !(rdch->flags & CHN_F_DEAD)) { + CHN_LOCK(rdch); e = (events & (POLLIN | POLLRDNORM)); if (e) ret |= chn_poll(rdch, e, td); + CHN_UNLOCK(rdch); } - dsp_unlock_chans(priv, FREAD | FWRITE); - PCM_GIANT_LEAVE(d); return (ret); |
