|
@@ -655,8 +655,6 @@ void snd_bebob_stream_stop_duplex(struct snd_bebob *bebob)
|
|
|
struct amdtp_stream *master, *slave;
|
|
|
atomic_t *master_substreams, *slave_substreams;
|
|
|
|
|
|
- mutex_lock(&bebob->mutex);
|
|
|
-
|
|
|
if (bebob->master == &bebob->rx_stream) {
|
|
|
slave = &bebob->tx_stream;
|
|
|
master = &bebob->rx_stream;
|
|
@@ -669,6 +667,8 @@ void snd_bebob_stream_stop_duplex(struct snd_bebob *bebob)
|
|
|
master_substreams = &bebob->capture_substreams;
|
|
|
}
|
|
|
|
|
|
+ mutex_lock(&bebob->mutex);
|
|
|
+
|
|
|
if (atomic_read(slave_substreams) == 0) {
|
|
|
amdtp_stream_pcm_abort(slave);
|
|
|
amdtp_stream_stop(slave);
|