[alsa-devel] [TINYCOMPRESS][PATCH] compress: compress_wait() must return error if timed out
Vinod Koul
vinod.koul at intel.com
Tue Nov 12 06:01:14 CET 2013
On Tue, Oct 22, 2013 at 11:51:58AM +0100, Richard Fitzgerald wrote:
> The caller must be certain that a return of 0 really means
> that compress is ready for more data, so when poll() returns
> 0 for a timeout we must report that as an error.
Applied, thanks
--
~Vinod
>
> Signed-off-by: Richard Fitzgerald <rf at opensource.wolfsonmicro.com>
> ---
> compress.c | 18 ++++++++++--------
> 1 files changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/compress.c b/compress.c
> index 5cd0966..d1a2283 100644
> --- a/compress.c
> +++ b/compress.c
> @@ -616,15 +616,17 @@ int compress_wait(struct compress *compress, int timeout_ms)
> fds.events = POLLOUT | POLLIN;
>
> ret = poll(&fds, 1, timeout_ms);
> - if (fds.revents & POLLERR) {
> - return oops(compress, EIO, "poll returned error!");
> + if (ret > 0) {
> + if (fds.revents & POLLERR)
> + return oops(compress, EIO, "poll returned error!");
> + if (fds.revents & (POLLOUT | POLLIN))
> + return 0;
> }
> - /* A pause will cause -EBADFD or zero. */
> - if ((ret < 0) && (ret != -EBADFD))
> + if (ret == 0)
> + return oops(compress, ETIME, "poll timed out");
> + if (ret < 0)
> return oops(compress, errno, "poll error");
> - if (fds.revents & (POLLOUT | POLLIN)) {
> - return 0;
> - }
> - return ret;
> +
> + return oops(compress, EIO, "poll signalled unhandled event");
> }
>
> --
> 1.7.2.5
>
--
More information about the Alsa-devel
mailing list