Date: Thu, 2 Nov 2000 03:36:12 -0600 (CST) From: zach@uffdaonline.net To: FreeBSD-gnats-submit@freebsd.org Subject: kern/22532: [patch] /dev/dsp is sometimes busy when not opened... Message-ID: <20001102093612.7B329207F@uffdaonline.net>
next in thread | raw e-mail | index | archive | help
>Number: 22532
>Category: kern
>Synopsis: [patch] /dev/dsp is sometimes busy when not opened...
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Nov 02 01:40:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Zach N. Heilig
>Release: FreeBSD 4.1.1-STABLE i386
>Organization:
>Environment:
>Description:
when opening /dev/dsp for reading+writing, the open function sometimes
forgets to reset the read channel busy flag if the open fails (for
example: the write channel was busy, but the read channel was not).
>How-To-Repeat:
#include <fcntl.h>
int
main(void)
{
open("/dev/dsp", O_WRONLY);
open("/dev/dsp", O_RDWR);
}
notice that it is now impossible to open /dev/dsp for reading...
>Fix:
Index: dsp.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/dsp.c,v
retrieving revision 1.15.2.4
diff -u -r1.15.2.4 dsp.c
--- dsp.c 2000/10/05 05:05:06 1.15.2.4
+++ dsp.c 2000/11/01 13:27:09
@@ -99,7 +99,11 @@
rdch->flags &= ~CHN_F_BUSY;
return EBUSY;
}
- } else return EBUSY;
+ } else {
+ if (rdch && (oflags & FREAD))
+ rdch->flags &= ~CHN_F_BUSY;
+ return EBUSY;
+ }
}
d->aplay[chan] = wrch;
d->arec[chan] = rdch;
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001102093612.7B329207F>
