mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-22 14:36:38 -05:00
ASoC: Intel: avs: Disconnect substream if suspend or resume fails
To improve performance and overall system stability, suspend/resume operations for ASoC cards always return success status and defer the actual work. Because of that, if a substream fails to resume, userspace may still attempt to invoke commands on it as from their perspective the operation completed successfully. Set substream's state to DISCONNECTED to ensure no further commands are attempted. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20221116115550.1100398-3-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
c30c8f9d51
commit
f3fbb553f9
@@ -934,8 +934,11 @@ static int avs_component_pm_op(struct snd_soc_component *component, bool be,
|
||||
rtd = snd_pcm_substream_chip(data->substream);
|
||||
if (rtd->dai_link->no_pcm == be && !rtd->dai_link->ignore_suspend) {
|
||||
ret = op(dai, data);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
__snd_pcm_set_state(data->substream->runtime,
|
||||
SNDRV_PCM_STATE_DISCONNECTED);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -944,8 +947,11 @@ static int avs_component_pm_op(struct snd_soc_component *component, bool be,
|
||||
rtd = snd_pcm_substream_chip(data->substream);
|
||||
if (rtd->dai_link->no_pcm == be && !rtd->dai_link->ignore_suspend) {
|
||||
ret = op(dai, data);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
__snd_pcm_set_state(data->substream->runtime,
|
||||
SNDRV_PCM_STATE_DISCONNECTED);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user