Update of /cvsroot/alsa/alsa-kernel/core In directory usw-pr-cvs1:/tmp/cvs-serv13159
Modified Files: pcm_native.c Log Message: Fixed spinlock/sleep race for prepare and reset Index: pcm_native.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/core/pcm_native.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- pcm_native.c 25 Aug 2002 13:02:42 -0000 1.23 +++ pcm_native.c 3 Oct 2002 10:16:21 -0000 1.24 @@ -947,7 +947,10 @@ static int snd_pcm_reset(snd_pcm_substream_t *substream) { int res; + + spin_lock_irq(&substream->runtime->lock); _SND_PCM_ACTION(reset, substream, 0, res, 0); + spin_unlock_irq(&substream->runtime->lock); return res; } @@ -984,6 +987,7 @@ { int res; snd_card_t *card = substream->pcm->card; + snd_power_lock(card); while (snd_power_get_state(card) != SNDRV_CTL_POWER_D0) { if (substream->ffile->f_flags & O_NONBLOCK) { @@ -993,7 +997,9 @@ snd_power_wait(card); } + spin_lock_irq(&substream->runtime->lock); _SND_PCM_ACTION(prepare, substream, 0, res, 0); + spin_unlock_irq(&substream->runtime->lock); _power_unlock: snd_power_unlock(card); @@ -2051,21 +2057,9 @@ case SNDRV_PCM_IOCTL_CHANNEL_INFO: return snd_pcm_channel_info(substream, (snd_pcm_channel_info_t *) arg); case SNDRV_PCM_IOCTL_PREPARE: - { - int res; - spin_lock_irq(&substream->runtime->lock); - res = snd_pcm_prepare(substream); - spin_unlock_irq(&substream->runtime->lock); - return res; - } + return snd_pcm_prepare(substream); case SNDRV_PCM_IOCTL_RESET: - { - int res; - spin_lock_irq(&substream->runtime->lock); - res = snd_pcm_reset(substream); - spin_unlock_irq(&substream->runtime->lock); - return res; - } + return snd_pcm_reset(substream); case SNDRV_PCM_IOCTL_START: { int res; ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog