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: Laxminath Kasam <lkasam@codeaurora.org>
This commit is contained in:
committed by
Han Sol Jin
parent
90b441067d
commit
1ee23bd8c3
@@ -953,6 +953,11 @@ static int msm_pcm_capture_copy(struct snd_pcm_substream *substream,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user