diff options
author | Jaroslav Kysela <perex@perex.cz> | 2010-07-19 16:37:39 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2010-07-19 16:47:01 +0200 |
commit | 9e216e8a40428cbf689222148c28d0256fbd0186 (patch) | |
tree | 66b750cb33712c853d887a648f94875346b445d5 | |
parent | 79c944ad136c4d14388d803b51113dcaaa1d179d (diff) | |
download | op-kernel-dev-9e216e8a40428cbf689222148c28d0256fbd0186.zip op-kernel-dev-9e216e8a40428cbf689222148c28d0256fbd0186.tar.gz |
ALSA: pcm core - add a safe check to the silence filling function
In situation when appl_ptr is far greater then hw_ptr, the hw_avail value
can be greater than buffer_size. Check for this.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r-- | sound/core/pcm_lib.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index bcf95d3..e23e0e7 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -67,6 +67,8 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram } else { if (new_hw_ptr == ULONG_MAX) { /* initialization */ snd_pcm_sframes_t avail = snd_pcm_playback_hw_avail(runtime); + if (avail > runtime->buffer_size) + avail = runtime->buffer_size; runtime->silence_filled = avail > 0 ? avail : 0; runtime->silence_start = (runtime->status->hw_ptr + runtime->silence_filled) % |