diff options
author | Jaroslav Kysela <perex@perex.cz> | 2010-01-08 08:43:01 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2010-01-08 08:46:45 +0100 |
commit | 7b3a177b0d4f92b3431b8dca777313a07533a710 (patch) | |
tree | 25a484491731ef31baa6a80f468ed78d6e553cd9 /sound/core | |
parent | 1250932e48d3b698415b1f04775433cf1da688d6 (diff) | |
download | linux-7b3a177b0d4f92b3431b8dca777313a07533a710.tar.gz linux-7b3a177b0d4f92b3431b8dca777313a07533a710.tar.bz2 linux-7b3a177b0d4f92b3431b8dca777313a07533a710.zip |
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')
-rw-r--r-- | sound/core/pcm_lib.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index a63226232ef4..c7b35b20e659 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, (unsigned long)runtime->hw_ptr_base); } /* something must be really wrong */ - if (delta >= runtime->buffer_size) { + if (delta >= runtime->buffer_size + runtime->period_size) { hw_ptr_error(substream, "Unexpected hw_pointer value %s" "(stream=%i, pos=%ld, new_hw_ptr=%ld, " |