diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2020-11-20 14:02:43 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2020-11-20 14:02:43 +0000 |
commit | 77602e977e0c6d1d8cd6e1e2b5fc7c1be95b79aa (patch) | |
tree | d91e234a7fcb6ef6bffe82f6efae51940ba09c1e /sys/dev/sound/pcm/dsp.c | |
parent | 47384244f90374f5e27eb749cfe0edabf93c62e5 (diff) | |
download | src-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.c | 2 |
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); } |