aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sound/pcm/dsp.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2020-11-20 14:02:43 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2020-11-20 14:02:43 +0000
commit77602e977e0c6d1d8cd6e1e2b5fc7c1be95b79aa (patch)
treed91e234a7fcb6ef6bffe82f6efae51940ba09c1e /sys/dev/sound/pcm/dsp.c
parent47384244f90374f5e27eb749cfe0edabf93c62e5 (diff)
downloadsrc-77602e977e0c6d1d8cd6e1e2b5fc7c1be95b79aa.tar.gz
src-77602e977e0c6d1d8cd6e1e2b5fc7c1be95b79aa.zip
Unlock channels when any of them are locked, when returning for non-busy state.
Reported and tested by: "Wall, Stephen" <stephen.wall@redcom.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week
Notes
Notes: svn path=/head/; revision=367892
Diffstat (limited to 'sys/dev/sound/pcm/dsp.c')
-rw-r--r--sys/dev/sound/pcm/dsp.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c
index 4df035f99c82..0593a585b0fd 100644
--- a/sys/dev/sound/pcm/dsp.c
+++ b/sys/dev/sound/pcm/dsp.c
@@ -857,6 +857,8 @@ dsp_io_ops(struct cdev *i_dev, struct uio *buf)
getchns(i_dev, &rdch, &wrch, prio);
if (*ch == NULL || !((*ch)->flags & CHN_F_BUSY)) {
+ if (rdch != NULL || wrch != NULL)
+ relchns(i_dev, rdch, wrch, prio);
PCM_GIANT_EXIT(d);
return (EBADF);
}