summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeeja KP <jeeja.kp@intel.com>2016-09-02 21:49:44 +0530
committerTakashi Iwai <tiwai@suse.de>2016-09-06 12:10:29 +0200
commitf3f6c61452e28ffdf93b101555546af8ef63def5 (patch)
tree7f5becf2971b221d9505d80d3ab84556c6a04b8b
parent8c91d7d09e3cd52d5d409ba05e8eb9be0f6a2349 (diff)
downloadlinux-f3f6c61452e28ffdf93b101555546af8ef63def5.tar.gz
linux-f3f6c61452e28ffdf93b101555546af8ef63def5.tar.bz2
linux-f3f6c61452e28ffdf93b101555546af8ef63def5.zip
ALSA: pcm: Fix avail to return error if stream is suspended
When the stream is in suspended state some applications wait on "Stream Pipe Error" in response to snd_pcm_avail call to resume the stream. In the current implementation snd_pcm_avail() returns zero when the stream is in suspended state. This causes application to enter in infinite loop for frames to be available. "Stream pipe Error" code is getting returned for read/write call when the stream is in suspended state. Similarly update snd_pcm_avail to return -ESTRPIPE. Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/core/pcm_native.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index c61fd50f771f..9d33c1e85c79 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2637,9 +2637,11 @@ static int snd_pcm_hwsync(struct snd_pcm_substream *substream)
break;
/* Fall through */
case SNDRV_PCM_STATE_PREPARED:
- case SNDRV_PCM_STATE_SUSPENDED:
err = 0;
break;
+ case SNDRV_PCM_STATE_SUSPENDED:
+ err = -ESTRPIPE;
+ break;
case SNDRV_PCM_STATE_XRUN:
err = -EPIPE;
break;