[LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd
Jinseok Kim
always.starving0@gmail.com
Sat Feb 21 14:40:08 CET 2026
Add a poll() test to verify that POLLNVAL is reported for invalid file
descriptors.
The test closes one end of a pipe and passes the closed descriptor to
poll(). poll() is expected to return successfully and set POLLNVAL in
revents.
This verifies poll() handling of invalid file descriptors without
triggering an error return.
Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
testcases/kernel/syscalls/poll/poll04.c | 63 +++++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 testcases/kernel/syscalls/poll/poll04.c
diff --git a/testcases/kernel/syscalls/poll/poll04.c b/testcases/kernel/syscalls/poll/poll04.c
new file mode 100644
index 000000000..7645459b5
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll04.c
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
+ */
+
+/*\
+ * Check that poll() reports POLLNVAL for invalid file descriptors.
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/poll.h>
+
+#include "tst_test.h"
+
+static int fds[2];
+static int invalid_fd;
+
+void verify_pollnval(void)
+{
+ struct pollfd pfd = {
+ .fd = invalid_fd, .events = POLLIN,
+ };
+
+ TEST(poll(&pfd, 1, 0));
+
+ if (TST_RET == -1) {
+ tst_res(TFAIL | TTERRNO, "poll() failed");
+ return;
+ }
+
+ if (TST_RET != 1) {
+ tst_res(TFAIL, "Unexpected poll() return value %ld", TST_RET);
+ return;
+ }
+
+ TST_EXP_EXPR(pfd.revents & POLLNVAL);
+ TST_EXP_EXPR((pfd.revents & ~POLLNVAL) == 0);
+
+ tst_res(TPASS, "poll() reported POLLNVAL");
+}
+
+static void setup(void)
+{
+ SAFE_PIPE(fds);
+
+ invalid_fd = fds[0];
+ SAFE_CLOSE(fds[0]);
+}
+
+static void cleanup(void)
+{
+ if (fds[0] > 0)
+ SAFE_CLOSE(fds[0]);
+
+ if (fds[1] > 0)
+ SAFE_CLOSE(fds[1]);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .cleanup = cleanup,
+ .test_all = verify_pollnval,
+};
--
2.43.0
More information about the ltp
mailing list