From 77602e977e0c6d1d8cd6e1e2b5fc7c1be95b79aa Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 20 Nov 2020 14:02:43 +0000 Subject: [PATCH] Unlock channels when any of them are locked, when returning for non-busy state. Reported and tested by: "Wall, Stephen" Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/dev/sound/pcm/dsp.c | 2 ++ 1 file changed, 2 insertions(+) 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); }