once draining is done, the pcm enters the SETUP state, which ought to be valid for snd_pcm_drain() signed-off-by: Sylvain BERTRAND <sylvain.bertrand@xxxxxxxxxx> --- I missed this one in my previous patch because exiting with or without an error once draining is done was producing the same result. --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -1329,7 +1329,7 @@ int snd_pcm_drain(snd_pcm_t *pcm) SNDMSG("PCM not set up"); return -EIO; } - err = bad_pcm_state(pcm, P_STATE_RUNNABLE); + err = bad_pcm_state(pcm, P_STATE_RUNNABLE | P_STATE(SETUP)); if (err < 0) return err; /* lock handled in the callback */