On Fri, Jul 17, 2026 at 02:21:21AM +0900, Hayato Kiwata wrote:
On Linux, EAGAIN and EWOULDBLOCK have the same value. Commit d2a1dc744b10 ("tap: Restructure in tap_pasta_input()") added a check for EWOULDBLOCK on purpose:
- Check for EWOULDBLOCK as well as EAGAIN for the benefit of any future ports where those might not have the same value
However, the condition uses && instead of ||, so it can never be true on a platform where EAGAIN and EWOULDBLOCK are different.
Use || instead so that the check works as intended on such platforms.
Fixes: d2a1dc744b10 ("tap: Restructure in tap_pasta_input()")
Signed-off-by: Hayato Kiwata
Oops, mea culpa.
Reviewed-by: David Gibson
--- tap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tap.c b/tap.c index d418961..cf87591 100644 --- a/tap.c +++ b/tap.c @@ -1329,7 +1329,7 @@ static void tap_pasta_input(struct ctx *c, const struct timespec *now) continue; }
- if (errno == EAGAIN && errno == EWOULDBLOCK) + if (errno == EAGAIN || errno == EWOULDBLOCK) break; /* all done for now */
die("Error on tap device, exiting"); -- 2.39.5 (Apple Git-154)
-- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson