aboutsummaryrefslogtreecommitdiff
path: root/test/empty-eownerdead.c
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 04:56:03 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 04:56:03 +0000
commit0c293cb4bc9a97db3975f3aacd6b537ea50173ae (patch)
treeebe9c872e416346e4b333e5062da32401c8e0a73 /test/empty-eownerdead.c
parentd53db6851ea17b2d219d084e1afc683b8b62b105 (diff)
parent1d27ff1934c5c4292dc00fba7f7f8ae411ed42f5 (diff)
downloadliburing-android14-mainline-mediaprovider-release.tar.gz
Change-Id: Idb2d52ac5dc603b1ddc5f365b8a6de9bb348fc3b
Diffstat (limited to 'test/empty-eownerdead.c')
-rw-r--r--test/empty-eownerdead.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/empty-eownerdead.c b/test/empty-eownerdead.c
new file mode 100644
index 0000000..40f854f
--- /dev/null
+++ b/test/empty-eownerdead.c
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Test if entering with nothing to submit/wait for SQPOLL returns an error.
+ */
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "liburing.h"
+#include "helpers.h"
+#include "../src/syscall.h"
+
+int main(int argc, char *argv[])
+{
+ struct io_uring_params p = {};
+ struct io_uring ring;
+ int ret;
+
+ if (argc > 1)
+ return 0;
+
+ p.flags = IORING_SETUP_SQPOLL;
+ p.sq_thread_idle = 100;
+
+ ret = t_create_ring_params(1, &ring, &p);
+ if (ret == T_SETUP_SKIP)
+ return 0;
+ else if (ret < 0)
+ goto err;
+
+ ret = __sys_io_uring_enter(ring.ring_fd, 0, 0, 0, NULL);
+ if (ret < 0) {
+ int __e = errno;
+
+ if (__e == EOWNERDEAD)
+ fprintf(stderr, "sqe submit unexpected failure due old kernel bug: %s\n", strerror(__e));
+ else
+ fprintf(stderr, "sqe submit unexpected failure: %s\n", strerror(__e));
+ goto err;
+ }
+
+ return 0;
+err:
+ return 1;
+}