From: Takashi Sakamoto Date: Thu, 13 May 2021 13:48:28 +0000 (+0900) Subject: axfer: fix regression of timeout in timer-based scheduling model X-Git-Tag: v1.2.5~35 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=9af7148fa333ed1adfc3a400a017f1d4283a61ea;p=alsa-utils.git axfer: fix regression of timeout in timer-based scheduling model In timer-based scheduling model, event waiting is just to measure time elapse since no event is expected to occur. However, as a result to applying commit e5e6a7838b06, -ETIMEDOUT returns in the case and the caller handles it as error. This results in disorder of the scheduling model. This commit fixes the regression so that the -ETIMEDOUT case is expected. Reported-by: Amadeusz Sławiński Link: https://lore.kernel.org/alsa-devel/687f9871-7484-1370-04d1-9c968e86f72b@linux.intel.com/ Fixes: e5e6a7838b06 ("axfer: return ETIMEDOUT when no event occurs after waiter expiration") Signed-off-by: Takashi Sakamoto Signed-off-by: Jaroslav Kysela --- diff --git a/axfer/xfer-libasound-timer-mmap.c b/axfer/xfer-libasound-timer-mmap.c index ba26e29..5715144 100644 --- a/axfer/xfer-libasound-timer-mmap.c +++ b/axfer/xfer-libasound-timer-mmap.c @@ -171,7 +171,8 @@ static int timer_mmap_process_frames(struct libasound_state *state, // exactly the mechanism yet. err = xfer_libasound_wait_event(state, timeout_msec, &revents); - if (err < 0) + // MEMO: timeout is expected since the above call is just to measure time elapse. + if (err < 0 && err != -ETIMEDOUT) return err; if (revents & POLLERR) { // TODO: error reporting.