Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f513e11 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: pcm - Reset invalid position even without debug option



Always reset the invalind hw_ptr position returned by the pointer
callback.  The behavior should be consitent independently from the
debug option.

Also, add the printk_ratelimit() check to avoid flooding debug
prints.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 98204646
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -159,11 +159,15 @@ snd_pcm_update_hw_ptr_pos(struct snd_pcm_substream *substream,
	pos = substream->ops->pointer(substream);
	if (pos == SNDRV_PCM_POS_XRUN)
		return pos; /* XRUN */
#ifdef CONFIG_SND_DEBUG
	if (pos >= runtime->buffer_size) {
		snd_printk(KERN_ERR  "BUG: stream = %i, pos = 0x%lx, buffer size = 0x%lx, period size = 0x%lx\n", substream->stream, pos, runtime->buffer_size, runtime->period_size);
		if (printk_ratelimit()) {
			snd_printd(KERN_ERR  "BUG: stream = %i, pos = 0x%lx, "
				   "buffer size = 0x%lx, period size = 0x%lx\n",
				   substream->stream, pos, runtime->buffer_size,
				   runtime->period_size);
		}
		pos = 0;
	}
#endif
	pos -= pos % runtime->min_align;
	return pos;
}