|
@@ -273,7 +273,11 @@ static void usX2Y_clients_stop(struct usX2Ydev *usX2Y)
|
|
|
struct snd_usX2Y_substream *subs = usX2Y->subs[s];
|
|
|
if (subs) {
|
|
|
if (atomic_read(&subs->state) >= state_PRERUNNING) {
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ snd_pcm_stream_lock_irqsave(subs->pcm_substream, flags);
|
|
|
snd_pcm_stop(subs->pcm_substream, SNDRV_PCM_STATE_XRUN);
|
|
|
+ snd_pcm_stream_unlock_irqrestore(subs->pcm_substream, flags);
|
|
|
}
|
|
|
for (u = 0; u < NRURBS; u++) {
|
|
|
struct urb *urb = subs->urb[u];
|