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

Commit 5e3924db authored by Laxminath Kasam's avatar Laxminath Kasam Committed by Gerrit - the friendly Code Review server
Browse files

asoc: Reset the buffer if size is partial or zero



Sometimes during device switch in recording,
observe size 0 is return from DSP due to EOS
handling. For ALSA pcm_read to unblock, buffer
appl_ptr is elapsed without actually updating
the buffer. And userspace copies the stale
data(old buffer) causing issue sometimes.
Reset the buffer for that period_size in
such cases instead of transfer stale data.

Change-Id: I0d3ac133a8d95fad0710586e3e947410a41c9c5a
Signed-off-by: default avatarLaxminath Kasam <lkasam@codeaurora.org>
parent b28f33f7
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1007,6 +1007,11 @@ static int msm_pcm_capture_copy(struct snd_pcm_substream *substream,
			xfer = size;
		offset = prtd->in_frame_info[idx].offset;
		pr_debug("Offset value = %d\n", offset);
		if (size == 0 || size < fbytes) {
			memset(bufptr + offset + size, 0, fbytes - size);
			size = xfer = fbytes;
		}

		if (copy_to_user(buf, bufptr+offset, xfer)) {
			pr_err("Failed to copy buf to user\n");
			ret = -EFAULT;