Skip to content

Commit

Permalink
ALSA: pcm: Assure sync with the pending stop operation at suspend
Browse files Browse the repository at this point in the history
commit 2c87c1a upstream.

The current PCM code calls the sync_stop at the resume action due to
the analogy to the PCM prepare call pattern.  But, it makes little
sense, as the sync should have been done rather at the suspend time,
not at the resume time.

This patch corrects the sync_stop call at suspend/resume to assure the
sync before finishing the suspend.

Fixes: 1e850be ("ALSA: pcm: Add the support for sync-stop operation")
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210206203656.15959-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
tiwai authored and gregkh committed Mar 4, 2021
1 parent 3a13ee9 commit 312086e
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion sound/core/pcm_native.c
Expand Up @@ -1615,6 +1615,7 @@ static int snd_pcm_do_suspend(struct snd_pcm_substream *substream,
if (! snd_pcm_running(substream))
return 0;
substream->ops->trigger(substream, SNDRV_PCM_TRIGGER_SUSPEND);
runtime->stop_operating = true;
return 0; /* suspend unconditionally */
}

Expand Down Expand Up @@ -1691,6 +1692,12 @@ int snd_pcm_suspend_all(struct snd_pcm *pcm)
return err;
}
}

for (stream = 0; stream < 2; stream++)
for (substream = pcm->streams[stream].substream;
substream; substream = substream->next)
snd_pcm_sync_stop(substream, false);

return 0;
}
EXPORT_SYMBOL(snd_pcm_suspend_all);
Expand Down Expand Up @@ -1736,7 +1743,6 @@ static void snd_pcm_post_resume(struct snd_pcm_substream *substream,
snd_pcm_trigger_tstamp(substream);
runtime->status->state = runtime->status->suspended_state;
snd_pcm_timer_notify(substream, SNDRV_TIMER_EVENT_MRESUME);
snd_pcm_sync_stop(substream, true);
}

static const struct action_ops snd_pcm_action_resume = {
Expand Down

0 comments on commit 312086e

Please sign in to comment.