Use TEMP_FAILTURE_RETRY instead of checking EINTR by hand 84/230384/4
authorLukasz Pawelczyk <l.pawelczyk@samsung.com>
Thu, 9 Apr 2020 15:51:15 +0000 (17:51 +0200)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Fri, 26 Jun 2020 15:36:20 +0000 (17:36 +0200)
Change-Id: Ic1c97915c98bfa26cc04f28adf3d3292ef157aa2

src/crypto.c

index 98e5a19..a22d9c5 100644 (file)
@@ -68,17 +68,13 @@ static int getrandom_wrapper(unsigned char *buf, int num)
 
        while (remaining > 0) {
 #ifdef SYS_getrandom
-               ssize_t n = syscall(SYS_getrandom, buf + received, remaining, 0);
+               ssize_t n = TEMP_FAILURE_RETRY(syscall(SYS_getrandom, buf + received, remaining, 0));
 #else /* SYS_getrandom */
-               ssize_t n = read(urandom_fd, buf + received, remaining);
+               ssize_t n = TEMP_FAILURE_RETRY(read(urandom_fd, buf + received, remaining));
 #endif /* SYS_getrandom */
 
-               if (n == -1) {
-                       if (errno == EINTR)
-                               continue;
-
+               if (n == -1)
                        return 0;
-               }
 
                received += n;
                remaining -= n;