diff options
Diffstat (limited to 'sound/firewire/dice/dice-midi.c')
| -rw-r--r-- | sound/firewire/dice/dice-midi.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/sound/firewire/dice/dice-midi.c b/sound/firewire/dice/dice-midi.c index ca7ae427e892..c9e19bddfc09 100644 --- a/sound/firewire/dice/dice-midi.c +++ b/sound/firewire/dice/dice-midi.c @@ -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);  | 
