diff --git a/dsp/codecs/audio_utils.c b/dsp/codecs/audio_utils.c index 15ee9f51a7d8..e55967841fa6 100644 --- a/dsp/codecs/audio_utils.c +++ b/dsp/codecs/audio_utils.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2017, The Linux Foundation. All rights reserved. +/* Copyright (c) 2010-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -760,6 +760,10 @@ ssize_t audio_in_read(struct file *file, } bytes_to_copy = (size + audio->out_frame_info[idx][1]); + if (bytes_to_copy == 0) { + rc = 0; + break; + } /* Number of frames information copied */ buf += sizeof(unsigned char); count -= sizeof(unsigned char); @@ -793,8 +797,10 @@ ssize_t audio_in_read(struct file *file, pr_debug("%s:session id %d: read: %zd bytes\n", __func__, audio->ac->session, (buf-start)); - if (buf > start) - return buf - start; + if (!rc) { + if (buf > start) + return buf - start; + } return rc; }