Index: dsp.c =================================================================== RCS file: /home/ncvs/src/sys/dev/sound/pcm/dsp.c,v retrieving revision 1.57 retrieving revision 1.59 diff -u -p -r1.57 -r1.59 --- dsp.c 28 Aug 2002 15:19:30 -0000 1.57 +++ dsp.c 11 Feb 2003 16:58:54 -0000 1.59 @@ -29,7 +29,7 @@ #include -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/dsp.c,v 1.57 2002/08/28 15:19:30 orion Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/dsp.c,v 1.59 2003/02/11 16:58:54 green Exp $"); #define OLDPCM_IOCTL @@ -274,8 +274,11 @@ dsp_open(dev_t i_dev, int flags, int mod if (chn_reset(rdch, fmt)) { pcm_lock(d); pcm_chnrelease(rdch); - if (wrch && (flags & FWRITE)) + i_dev->si_drv1 = NULL; + if (wrch && (flags & FWRITE)) { pcm_chnrelease(wrch); + i_dev->si_drv2 = NULL; + } pcm_unlock(d); splx(s); return ENODEV; @@ -289,11 +292,12 @@ dsp_open(dev_t i_dev, int flags, int mod if (chn_reset(wrch, fmt)) { pcm_lock(d); pcm_chnrelease(wrch); + i_dev->si_drv2 = NULL; if (flags & FREAD) { CHN_LOCK(rdch); pcm_chnref(rdch, -1); pcm_chnrelease(rdch); - CHN_UNLOCK(rdch); + i_dev->si_drv1 = NULL; } pcm_unlock(d); splx(s);