Merge tag 'asoc-v5.3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[linux-2.6-microblaze.git] / sound / firewire / dice / dice-midi.c
index ca7ae42..c9e19bd 100644 (file)
@@ -17,8 +17,13 @@ static int midi_open(struct snd_rawmidi_substream *substream)
 
        mutex_lock(&dice->mutex);
 
-       dice->substreams_counter++;
-       err = snd_dice_stream_start_duplex(dice, 0);
+       err = snd_dice_stream_reserve_duplex(dice, 0);
+       if (err >= 0) {
+               ++dice->substreams_counter;
+               err = snd_dice_stream_start_duplex(dice);
+               if (err < 0)
+                       --dice->substreams_counter;
+       }
 
        mutex_unlock(&dice->mutex);
 
@@ -34,7 +39,7 @@ static int midi_close(struct snd_rawmidi_substream *substream)
 
        mutex_lock(&dice->mutex);
 
-       dice->substreams_counter--;
+       --dice->substreams_counter;
        snd_dice_stream_stop_duplex(dice);
 
        mutex_unlock(&dice->mutex);