aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core/pcm_lib.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2010-01-08 02:43:01 -0500
committerJaroslav Kysela <perex@perex.cz>2010-01-08 02:46:45 -0500
commit7b3a177b0d4f92b3431b8dca777313a07533a710 (patch)
tree25a484491731ef31baa6a80f468ed78d6e553cd9 /sound/core/pcm_lib.c
parent1250932e48d3b698415b1f04775433cf1da688d6 (diff)
ALSA: pcm_lib: fix "something must be really wrong" condition
When runtime->periods == 1 or when pointer crosses end of ring buffer, the delta might be greater than buffer_size. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/core/pcm_lib.c')
-rw-r--r--sound/core/pcm_lib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index a63226232ef..c7b35b20e65 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -362,7 +362,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
362 (unsigned long)runtime->hw_ptr_base); 362 (unsigned long)runtime->hw_ptr_base);
363 } 363 }
364 /* something must be really wrong */ 364 /* something must be really wrong */
365 if (delta >= runtime->buffer_size) { 365 if (delta >= runtime->buffer_size + runtime->period_size) {
366 hw_ptr_error(substream, 366 hw_ptr_error(substream,
367 "Unexpected hw_pointer value %s" 367 "Unexpected hw_pointer value %s"
368 "(stream=%i, pos=%ld, new_hw_ptr=%ld, " 368 "(stream=%i, pos=%ld, new_hw_ptr=%ld, "