File handle-eintr.patch of Package liburing

--- liburing-2.2/test/ce593a6c480a.c	
+++ liburing-2.2/test/ce593a6c480a.c	
@@ -111,15 +111,16 @@
 			(void*) (intptr_t) other_fd);
 
 	/* Wait on the event fd for an event to be ready */
-	ret = read(loop_fd, buf, 8);
-	if (ret < 0) {
-		perror("read");
-		return 1;
-	} else if (ret != 8) {
-		fprintf(stderr, "Odd-sized eventfd read: %d\n", ret);
-		return 1;
-	}
-
+	do {
+		ret = read(loop_fd, buf, 8);
+		if (ret < 0 && errno != EINTR) {
+			perror("read");
+			return 1;
+		} else if (ret > 0 && ret != 8) {
+			fprintf(stderr, "Odd-sized eventfd read: %d\n", ret);
+			return 1;
+		}
+	} while (ret < 0);
 
 	ret = io_uring_wait_cqe(&ring, &cqe);
 	if (ret) {
--- liburing-2.2/test/io-cancel.c
+++ liburing-2.2/test/io-cancel.c
@@ -366,10 +366,17 @@
 	} else {
 		int wstatus;
 
-		if (waitpid(p, &wstatus, 0) == (pid_t)-1) {
-			perror("waitpid()");
-			return 1;
-		}
+		do {
+			if (waitpid(p, &wstatus, 0) == (pid_t)-1) {
+				if (errno == EINTR) {
+					continue;
+				}
+				perror("waitpid()");
+				return 1;
+			}
+			break;
+		} while (1);
+
 		if (!WIFEXITED(wstatus) || WEXITSTATUS(wstatus)) {
 			fprintf(stderr, "child failed %i\n", WEXITSTATUS(wstatus));
 			return 1;
openSUSE Build Service is sponsored by