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>
This commit is contained in:
@@ -362,7 +362,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
|
|||||||
(unsigned long)runtime->hw_ptr_base);
|
(unsigned long)runtime->hw_ptr_base);
|
||||||
}
|
}
|
||||||
/* something must be really wrong */
|
/* something must be really wrong */
|
||||||
if (delta >= runtime->buffer_size) {
|
if (delta >= runtime->buffer_size + runtime->period_size) {
|
||||||
hw_ptr_error(substream,
|
hw_ptr_error(substream,
|
||||||
"Unexpected hw_pointer value %s"
|
"Unexpected hw_pointer value %s"
|
||||||
"(stream=%i, pos=%ld, new_hw_ptr=%ld, "
|
"(stream=%i, pos=%ld, new_hw_ptr=%ld, "
|
||||||
|
Reference in New Issue
Block a user