Page MenuHomeFreeBSD

D57009.id177869.diff
No OneTemporary

D57009.id177869.diff

diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c
--- a/sys/dev/sound/pcm/dsp.c
+++ b/sys/dev/sound/pcm/dsp.c
@@ -149,10 +149,10 @@
static void
dsp_lock_chans(struct dsp_cdevpriv *priv, uint32_t prio)
{
- if (priv->rdch != NULL && DSP_F_READ(prio))
- CHN_LOCK(priv->rdch);
if (priv->wrch != NULL && DSP_F_WRITE(prio))
CHN_LOCK(priv->wrch);
+ if (priv->rdch != NULL && DSP_F_READ(prio))
+ CHN_LOCK(priv->rdch);
}
static void
@@ -1877,24 +1877,25 @@
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);

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 17, 4:19 AM (11 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33123711
Default Alt Text
D57009.id177869.diff (1 KB)

Event Timeline