diff --git a/io_uring.c b/io_uring.c
index ea0141eb2f8a09a3e7ce45c12458227a2e66ff68..a7c4d22ab14bc900f852797182941b012b27b1ef 100644
--- a/io_uring.c
+++ b/io_uring.c
@@ -10,7 +10,7 @@ struct io_uring ring;
 void init(__attribute__((unused)) int fd) {
 	int res = io_uring_queue_init(1, &ring, 0);
 	if (res < 0) {
-		errno = res;
+		errno = -res;
 		err(EXIT_FAILURE, "io_uring_setup failed");
 	}
 }
diff --git a/io_uring.h b/io_uring.h
index 961ef308661c59069ff991f29d00a896ee9ebb17..936d8934946e99f26035b521e5ffebc302cdbd6a 100644
--- a/io_uring.h
+++ b/io_uring.h
@@ -26,7 +26,7 @@ struct io_uring_sqe* sqpoll_ring_get_sqe(struct io_uring* ring) {
 void io_uring_init_sqpoll(struct io_uring* ring) {
 	int res = io_uring_queue_init(SQPOLL_RING_ENTRIES, ring, IORING_SETUP_SQPOLL);
 	if (res < 0) {
-		errno = res;
+		errno = -res;
 		err(EXIT_FAILURE, "io_uring_setup failed");
 	}
 }