|
@@ -2227,7 +2227,8 @@ void snd_pcm_release_substream(struct snd_pcm_substream *substream)
|
|
|
|
|
|
snd_pcm_drop(substream);
|
|
snd_pcm_drop(substream);
|
|
if (substream->hw_opened) {
|
|
if (substream->hw_opened) {
|
|
- if (substream->ops->hw_free != NULL)
|
|
|
|
|
|
+ if (substream->ops->hw_free &&
|
|
|
|
+ substream->runtime->status->state != SNDRV_PCM_STATE_OPEN)
|
|
substream->ops->hw_free(substream);
|
|
substream->ops->hw_free(substream);
|
|
substream->ops->close(substream);
|
|
substream->ops->close(substream);
|
|
substream->hw_opened = 0;
|
|
substream->hw_opened = 0;
|