Browse Source

usock: fix poll return code check

errno needs to be compared against EINTR/EAGAIN instead of the return code,
and only if the return code is < 0.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau 1 year ago
parent
commit
ef5e8e38bd
1 changed files with 1 additions and 4 deletions
  1. 1 4
      usock.c

+ 1 - 4
usock.c

@@ -120,10 +120,7 @@ static int poll_restart(struct pollfd *fds, int nfds, int timeout)
 
 	while (1) {
 		ret = poll(fds, nfds, timeout);
-		if (ret == EAGAIN)
-			continue;
-
-		if (ret != EINTR)
+		if (ret >= 0 || (errno != EINTR && errno != EAGAIN))
 			return ret;
 
 		clock_gettime(CLOCK_MONOTONIC, &cur);