public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH 1/2] poll: add basic POLLHUP semantics test
@ 2026-02-19 16:36 Jinseok Kim
  2026-02-19 16:36 ` [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
  2026-02-20  9:51 ` [LTP] [PATCH " Cyril Hrubis
  0 siblings, 2 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-19 16:36 UTC (permalink / raw)
  To: ltp

Add a basic poll() test to verify that POLLHUP is reported when the
peer end of a pipe is closed.

The test creates a pipe, closes the write end, and polls the read end
for POLLIN events. poll() is expected to return successfully and set
POLLHUP in revents.

This covers basic poll() lifecycle semantics that were not previously
tested.

Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
 testcases/kernel/syscalls/poll/poll03.c | 60 +++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll03.c

diff --git a/testcases/kernel/syscalls/poll/poll03.c b/testcases/kernel/syscalls/poll/poll03.c
new file mode 100644
index 000000000..01189eb70
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll03.c
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
+ */
+
+/*
+ * Check that poll() reports POLLHUP on a pipe read end
+ * after the write end has been closed.
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/poll.h>
+
+#include "tst_test.h"
+
+static int fds[2];
+
+void verify_pollhup(void)
+{
+	struct pollfd pfd = {
+		.fd = fds[0], .events = POLLIN,
+	};
+
+	SAFE_CLOSE(fds[1]);
+	fds[1] = -1;
+
+	TEST(poll(&pfd, 1, -1));
+
+	if (TST_RET == -1) {
+		tst_res(TFAIL | TTERRNO, "poll() failed");
+		return;
+	}
+
+	if (!(pfd.revents & POLLHUP)) {
+		tst_res(TFAIL, "poll() did not report POLLHUP");
+		return;
+	}
+
+	tst_res(TPASS, "poll() reported POLLHUP");
+}
+
+static void setup(void)
+{
+	SAFE_PIPE(fds);
+}
+
+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_pollhup,
+};
--
2.43.0

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-19 16:36 [LTP] [PATCH 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
@ 2026-02-19 16:36 ` Jinseok Kim
  2026-02-20 10:05   ` Cyril Hrubis
  2026-02-20  9:51 ` [LTP] [PATCH " Cyril Hrubis
  1 sibling, 1 reply; 19+ messages in thread
From: Jinseok Kim @ 2026-02-19 16:36 UTC (permalink / raw)
  To: ltp

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 | 60 +++++++++++++++++++++++++
 1 file changed, 60 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..2013de642
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll04.c
@@ -0,0 +1,60 @@
+// 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];
+
+void verify_pollnval(void)
+{
+	int invalid_fd = fds[0];
+	struct pollfd pfd = {
+		.fd = invalid_fd, .events = POLLIN,
+	};
+
+	SAFE_CLOSE(fds[0]);
+	fds[0] = -1;
+
+	TEST(poll(&pfd, 1, 0));
+
+	if (TST_RET == -1) {
+		tst_res(TFAIL | TTERRNO, "poll() failed");
+		return;
+	}
+
+	if (!(pfd.revents & POLLNVAL)) {
+		tst_res(TFAIL, "poll() did not report POLLNVAL");
+		return;
+	}
+
+	tst_res(TPASS, "poll() reported POLLNVAL");
+}
+
+static void setup(void)
+{
+	SAFE_PIPE(fds);
+}
+
+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,
+};
\ No newline at end of file
--
2.43.0

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH 1/2] poll: add basic POLLHUP semantics test
  2026-02-19 16:36 [LTP] [PATCH 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
  2026-02-19 16:36 ` [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-20  9:51 ` Cyril Hrubis
  1 sibling, 0 replies; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-20  9:51 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
> Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
> ---
>  testcases/kernel/syscalls/poll/poll03.c | 60 +++++++++++++++++++++++++
>  1 file changed, 60 insertions(+)
>  create mode 100644 testcases/kernel/syscalls/poll/poll03.c
> 
> diff --git a/testcases/kernel/syscalls/poll/poll03.c b/testcases/kernel/syscalls/poll/poll03.c
> new file mode 100644
> index 000000000..01189eb70
> --- /dev/null
> +++ b/testcases/kernel/syscalls/poll/poll03.c
> @@ -0,0 +1,60 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
> + */
> +
> +/*

This should be documentation comment which starts with /*\

> + * Check that poll() reports POLLHUP on a pipe read end
> + * after the write end has been closed.
> + */
> +#include <unistd.h>
> +#include <errno.h>
> +#include <sys/poll.h>
> +
> +#include "tst_test.h"
> +
> +static int fds[2];
> +
> +void verify_pollhup(void)
> +{
> +	struct pollfd pfd = {
> +		.fd = fds[0], .events = POLLIN,
> +	};
> +
> +	SAFE_CLOSE(fds[1]);
> +	fds[1] = -1;

This is not needed, the SAFE_CLOSE() already sets the fd to -1.

> +	TEST(poll(&pfd, 1, -1));
> +
> +	if (TST_RET == -1) {
> +		tst_res(TFAIL | TTERRNO, "poll() failed");
> +		return;
> +	}

Here we should also check that we got correct return value. We expect to
get one event so:

	if (TST_RES != 1) {
		tst_res(TFAIL, "Unexpected poll() return value %i", TST_RET);
		return;
	}

> +	if (!(pfd.revents & POLLHUP)) {
> +		tst_res(TFAIL, "poll() did not report POLLHUP");
> +		return;
> +	}

Here as well, if we do not expect other bits set in the revents we
should also check that they are not set, something as:

	TST_EXP_EXPR(pfd.revents & POLLHUP);
	TST_EXP_EXPR((pfd.revents & ~POLLHUP) == 0);

> +	tst_res(TPASS, "poll() reported POLLHUP");
> +}
> +
> +static void setup(void)
> +{
> +	SAFE_PIPE(fds);
> +}
> +
> +static void cleanup(void)
> +{
> +	if (fds[0] >= 0)
> +		SAFE_CLOSE(fds[0]);
> +
> +	if (fds[1] >= 0)
> +		SAFE_CLOSE(fds[1]);

These ifs does not work. You either need to initialize the fds to -1 or
check just fds[0] > 0 here. As it is you will close stdin if SAFE_PIPE()
fails.

> +}
> +
> +static struct tst_test test = {
> +	.setup = setup,
> +	.cleanup = cleanup,
> +	.test_all = verify_pollhup,
> +};
> --
> 2.43.0
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-19 16:36 ` [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-20 10:05   ` Cyril Hrubis
  2026-02-21 13:33     ` [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
  2026-02-21 13:40     ` Jinseok Kim
  0 siblings, 2 replies; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-20 10:05 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
> 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 | 60 +++++++++++++++++++++++++
>  1 file changed, 60 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..2013de642
> --- /dev/null
> +++ b/testcases/kernel/syscalls/poll/poll04.c
> @@ -0,0 +1,60 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
> + */
> +
> +/*

Here as well /*\

> + * 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];
> +
> +void verify_pollnval(void)
> +{
> +	int invalid_fd = fds[0];
> +	struct pollfd pfd = {
> +		.fd = invalid_fd, .events = POLLIN,
> +	};
> +
> +	SAFE_CLOSE(fds[0]);
> +	fds[0] = -1;

Here as well, fds[0] is already set in the SAFE_CLOSE() macro.

Ah, and also this code will fail the test if we run it with -i 2 command
line parameter.

I guess that we need to do in test setup()

- copy the value of fds[0] to different variable
- close the fds[0]


Moreover it may make sense to write the test so that the fd is closed
while one thread is sleeping in the poll().

For that we would need to start a second thread that would wait for the
verify_pollnval() to sleep in the kernel and then close the fd. We do
have functions for that in the test library:

https://linux-test-project.readthedocs.io/en/latest/developers/api_c_tests.html#macro-tst-thread-state-wait


> +	TEST(poll(&pfd, 1, 0));
> +
> +	if (TST_RET == -1) {
> +		tst_res(TFAIL | TTERRNO, "poll() failed");
> +		return;
> +	}

Here as well, we should check that the return value was correct.

> +	if (!(pfd.revents & POLLNVAL)) {
> +		tst_res(TFAIL, "poll() did not report POLLNVAL");
> +		return;
> +	}

Here as well, we should check that only the flag we expected was set.

> +	tst_res(TPASS, "poll() reported POLLNVAL");
> +}
> +
> +static void setup(void)
> +{
> +	SAFE_PIPE(fds);
> +}
> +
> +static void cleanup(void)
> +{
> +	if (fds[0] >= 0)
> +		SAFE_CLOSE(fds[0]);
> +
> +	if (fds[1] >= 0)
> +		SAFE_CLOSE(fds[1]);

Here as well, either initialize fds or change the checks to >.

> +}
> +
> +static struct tst_test test = {
> +	.setup = setup,
> +	.cleanup = cleanup,
> +	.test_all = verify_pollnval,
> +};
> \ No newline at end of file
> --
> 2.43.0
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test
  2026-02-20 10:05   ` Cyril Hrubis
@ 2026-02-21 13:33     ` Jinseok Kim
  2026-02-21 13:40     ` Jinseok Kim
  1 sibling, 0 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-21 13:33 UTC (permalink / raw)
  To: chrubis, ltp

Hi,

Thanks for the review.

I've added the return value check as suggested. Since TST_RET is a long,
I used %ld in the message to match the type and avoid format warnings.

The suggestion about closing the fd while poll() is sleeping in the
kernel makes sense as well. I'll keep this in mind and consider adding
such a scenario as a follow-up test using the thread helpers you
mentioned.

Best regards,
Jinseok.

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test
  2026-02-20 10:05   ` Cyril Hrubis
  2026-02-21 13:33     ` [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
@ 2026-02-21 13:40     ` Jinseok Kim
  2026-02-21 13:40       ` [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
  2026-02-24 15:31       ` [LTP] [PATCH v2 " Cyril Hrubis
  1 sibling, 2 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-21 13:40 UTC (permalink / raw)
  To: chrubis, ltp

Add a basic poll() test to verify that POLLHUP is reported when the
peer end of a pipe is closed.

The test creates a pipe, closes the write end, and polls the read end
for POLLIN events. poll() is expected to return successfully and set
POLLHUP in revents.

This covers basic poll() lifecycle semantics that were not previously
tested.

Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
 testcases/kernel/syscalls/poll/poll03.c | 62 +++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll03.c

diff --git a/testcases/kernel/syscalls/poll/poll03.c b/testcases/kernel/syscalls/poll/poll03.c
new file mode 100644
index 000000000..da90b2945
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll03.c
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
+ */
+
+/*\
+ * Check that poll() reports POLLHUP on a pipe read end
+ * after the write end has been closed.
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/poll.h>
+
+#include "tst_test.h"
+
+static int fds[2];
+
+void verify_pollhup(void)
+{
+	struct pollfd pfd = {
+		.fd = fds[0], .events = POLLIN,
+	};
+
+	SAFE_CLOSE(fds[1]);
+
+	TEST(poll(&pfd, 1, -1));
+
+	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 & POLLHUP);
+	TST_EXP_EXPR((pfd.revents & ~POLLHUP) == 0);
+
+	tst_res(TPASS, "poll() reported POLLHUP");
+}
+
+static void setup(void)
+{
+	SAFE_PIPE(fds);
+}
+
+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_pollhup,
+};
--
2.43.0

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-21 13:40     ` Jinseok Kim
@ 2026-02-21 13:40       ` Jinseok Kim
  2026-02-24 15:36         ` Cyril Hrubis
  2026-02-24 15:31       ` [LTP] [PATCH v2 " Cyril Hrubis
  1 sibling, 1 reply; 19+ messages in thread
From: Jinseok Kim @ 2026-02-21 13:40 UTC (permalink / raw)
  To: chrubis, ltp

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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test
  2026-02-21 13:40     ` Jinseok Kim
  2026-02-21 13:40       ` [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-24 15:31       ` Cyril Hrubis
  2026-02-24 17:02         ` Jinseok Kim
  1 sibling, 1 reply; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-24 15:31 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
> Add a basic poll() test to verify that POLLHUP is reported when the
> peer end of a pipe is closed.
> 
> The test creates a pipe, closes the write end, and polls the read end
> for POLLIN events. poll() is expected to return successfully and set
> POLLHUP in revents.
> 
> This covers basic poll() lifecycle semantics that were not previously
> tested.
> 
> Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
> ---
>  testcases/kernel/syscalls/poll/poll03.c | 62 +++++++++++++++++++++++++

This is missing runtest entry in runtest/syscalls file.

> +void verify_pollhup(void)
> +{
> +	struct pollfd pfd = {
> +		.fd = fds[0], .events = POLLIN,
> +	};
> +
> +	SAFE_CLOSE(fds[1]);

Doesn't this fail the test on a second iteration? Have you tried to run
the test with -i 2?

The fd should be closed only once in the setup.

> +	TEST(poll(&pfd, 1, -1));
> +
> +	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 & POLLHUP);
> +	TST_EXP_EXPR((pfd.revents & ~POLLHUP) == 0);
> +
> +	tst_res(TPASS, "poll() reported POLLHUP");
> +}
> +
> +static void setup(void)
> +{
> +	SAFE_PIPE(fds);
> +}
> +
> +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_pollhup,
> +};
> --
> 2.43.0

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-21 13:40       ` [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-24 15:36         ` Cyril Hrubis
  2026-02-24 17:15           ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
  0 siblings, 1 reply; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-24 15:36 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
This is missing the runtest entry in runtest/syscalls but otherwise it's
fine.

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test
  2026-02-24 15:31       ` [LTP] [PATCH v2 " Cyril Hrubis
@ 2026-02-24 17:02         ` Jinseok Kim
  0 siblings, 0 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-24 17:02 UTC (permalink / raw)
  To: chrubis; +Cc: ltp

Hi,

Thanks for the review.

You're right, I missed that. Sorry for the extra work.

Jinseok.

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test
  2026-02-24 15:36         ` Cyril Hrubis
@ 2026-02-24 17:15           ` Jinseok Kim
  2026-02-24 17:15             ` [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
                               ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-24 17:15 UTC (permalink / raw)
  To: chrubis; +Cc: ltp

Add a basic poll() test to verify that POLLHUP is reported when the
peer end of a pipe is closed.

The test creates a pipe, closes the write end, and polls the read end
for POLLIN events. poll() is expected to return successfully and set
POLLHUP in revents.

This covers basic poll() lifecycle semantics that were not previously
tested.

Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
 runtest/syscalls                          |  1 +
 testcases/kernel/syscalls/poll/.gitignore |  1 +
 testcases/kernel/syscalls/poll/poll03.c   | 59 +++++++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll03.c

diff --git a/runtest/syscalls b/runtest/syscalls
index 05bb3ceb1..15df7c414 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1092,6 +1092,7 @@ pivot_root01 pivot_root01

 poll01 poll01
 poll02 poll02
+poll03 poll03

 ppoll01 ppoll01

diff --git a/testcases/kernel/syscalls/poll/.gitignore b/testcases/kernel/syscalls/poll/.gitignore
index 83be0ddf8..e3f66f4e6 100644
--- a/testcases/kernel/syscalls/poll/.gitignore
+++ b/testcases/kernel/syscalls/poll/.gitignore
@@ -1,2 +1,3 @@
 /poll01
 /poll02
+/poll03
diff --git a/testcases/kernel/syscalls/poll/poll03.c b/testcases/kernel/syscalls/poll/poll03.c
new file mode 100644
index 000000000..d621a492a
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll03.c
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
+ */
+
+/*\
+ * Check that poll() reports POLLHUP on a pipe read end
+ * after the write end has been closed.
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/poll.h>
+
+#include "tst_test.h"
+
+static int fds[2];
+
+void verify_pollhup(void)
+{
+	struct pollfd pfd = {
+		.fd = fds[0], .events = POLLIN,
+	};
+
+	TEST(poll(&pfd, 1, -1));
+
+	if (TST_RET == -1) {
+		tst_res(TFAIL | TTERRNO, "poll() failed");
+		return;
+	} else if (TST_RET != 1) {
+		tst_res(TFAIL, "Unexpected poll() return value %ld", TST_RET);
+		return;
+	}
+
+	TST_EXP_EXPR(pfd.revents & POLLHUP);
+	TST_EXP_EXPR((pfd.revents & ~POLLHUP) == 0);
+
+	tst_res(TPASS, "poll() reported POLLHUP");
+}
+
+static void setup(void)
+{
+	SAFE_PIPE(fds);
+	SAFE_CLOSE(fds[1]);
+}
+
+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_pollhup,
+};
--
2.43.0

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-24 17:15           ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
@ 2026-02-24 17:15             ` Jinseok Kim
  2026-02-25 10:36               ` Cyril Hrubis
  2026-02-25 10:37             ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Cyril Hrubis
  2026-02-25 11:39             ` [LTP] [PATCH v3 " Andrea Cervesato
  2 siblings, 1 reply; 19+ messages in thread
From: Jinseok Kim @ 2026-02-24 17:15 UTC (permalink / raw)
  To: chrubis; +Cc: ltp

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>
---
 runtest/syscalls                          |  1 +
 testcases/kernel/syscalls/poll/.gitignore |  1 +
 testcases/kernel/syscalls/poll/poll04.c   | 63 +++++++++++++++++++++++
 3 files changed, 65 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll04.c

diff --git a/runtest/syscalls b/runtest/syscalls
index 15df7c414..f937dd4c8 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1093,6 +1093,7 @@ pivot_root01 pivot_root01
 poll01 poll01
 poll02 poll02
 poll03 poll03
+poll04 poll04

 ppoll01 ppoll01

diff --git a/testcases/kernel/syscalls/poll/.gitignore b/testcases/kernel/syscalls/poll/.gitignore
index e3f66f4e6..7ba7262ec 100644
--- a/testcases/kernel/syscalls/poll/.gitignore
+++ b/testcases/kernel/syscalls/poll/.gitignore
@@ -1,3 +1,4 @@
 /poll01
 /poll02
 /poll03
+/poll04
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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-24 17:15             ` [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-25 10:36               ` Cyril Hrubis
  0 siblings, 0 replies; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-25 10:36 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test
  2026-02-24 17:15           ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
  2026-02-24 17:15             ` [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-25 10:37             ` Cyril Hrubis
  2026-02-25 11:28               ` [LTP] [PATCH v4 " Jinseok Kim
  2026-02-25 11:39             ` [LTP] [PATCH v3 " Andrea Cervesato
  2 siblings, 1 reply; 19+ messages in thread
From: Cyril Hrubis @ 2026-02-25 10:37 UTC (permalink / raw)
  To: Jinseok Kim; +Cc: ltp

Hi!
> +	TEST(poll(&pfd, 1, -1));
> +
> +	if (TST_RET == -1) {
> +		tst_res(TFAIL | TTERRNO, "poll() failed");
> +		return;
> +	} else if (TST_RET != 1) {
> +		tst_res(TFAIL, "Unexpected poll() return value %ld", TST_RET);
> +		return;
> +	}

No need for the else here. We do return in the previous if () block.

Otherwise:

Reviewed-by: Cyril Hrubis <chrubis@suse.cz>

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v4 1/2] poll: add basic POLLHUP semantics test
  2026-02-25 10:37             ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Cyril Hrubis
@ 2026-02-25 11:28               ` Jinseok Kim
  2026-02-25 11:28                 ` [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
  2026-02-25 11:34                 ` [LTP] [PATCH v4 1/2] poll: add basic POLLHUP semantics test Andrea Cervesato via ltp
  0 siblings, 2 replies; 19+ messages in thread
From: Jinseok Kim @ 2026-02-25 11:28 UTC (permalink / raw)
  To: chrubis; +Cc: ltp

Add a basic poll() test to verify that POLLHUP is reported when the
peer end of a pipe is closed.

The test creates a pipe, closes the write end, and polls the read end
for POLLIN events. poll() is expected to return successfully and set
POLLHUP in revents.

This covers basic poll() lifecycle semantics that were not previously
tested.

Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
 runtest/syscalls                          |  1 +
 testcases/kernel/syscalls/poll/.gitignore |  1 +
 testcases/kernel/syscalls/poll/poll03.c   | 61 +++++++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll03.c

diff --git a/runtest/syscalls b/runtest/syscalls
index 05bb3ceb1..15df7c414 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1092,6 +1092,7 @@ pivot_root01 pivot_root01

 poll01 poll01
 poll02 poll02
+poll03 poll03

 ppoll01 ppoll01

diff --git a/testcases/kernel/syscalls/poll/.gitignore b/testcases/kernel/syscalls/poll/.gitignore
index 83be0ddf8..e3f66f4e6 100644
--- a/testcases/kernel/syscalls/poll/.gitignore
+++ b/testcases/kernel/syscalls/poll/.gitignore
@@ -1,2 +1,3 @@
 /poll01
 /poll02
+/poll03
diff --git a/testcases/kernel/syscalls/poll/poll03.c b/testcases/kernel/syscalls/poll/poll03.c
new file mode 100644
index 000000000..182d8bd3c
--- /dev/null
+++ b/testcases/kernel/syscalls/poll/poll03.c
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Jinseok Kim <always.starving0@gmail.com>
+ */
+
+/*\
+ * Check that poll() reports POLLHUP on a pipe read end
+ * after the write end has been closed.
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/poll.h>
+
+#include "tst_test.h"
+
+static int fds[2];
+
+static void verify_pollhup(void)
+{
+	struct pollfd pfd = {
+		.fd = fds[0], .events = POLLIN,
+	};
+
+	TEST(poll(&pfd, 1, -1));
+
+	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 & POLLHUP);
+	TST_EXP_EXPR((pfd.revents & ~POLLHUP) == 0);
+
+	tst_res(TPASS, "poll() reported POLLHUP");
+}
+
+static void setup(void)
+{
+	SAFE_PIPE(fds);
+	SAFE_CLOSE(fds[1]);
+}
+
+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_pollhup,
+};
--
2.43.0

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-25 11:28               ` [LTP] [PATCH v4 " Jinseok Kim
@ 2026-02-25 11:28                 ` Jinseok Kim
  2026-02-25 11:34                   ` Andrea Cervesato via ltp
  2026-02-25 11:34                 ` [LTP] [PATCH v4 1/2] poll: add basic POLLHUP semantics test Andrea Cervesato via ltp
  1 sibling, 1 reply; 19+ messages in thread
From: Jinseok Kim @ 2026-02-25 11:28 UTC (permalink / raw)
  To: chrubis; +Cc: ltp

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>
---
 runtest/syscalls                          |  1 +
 testcases/kernel/syscalls/poll/.gitignore |  1 +
 testcases/kernel/syscalls/poll/poll04.c   | 63 +++++++++++++++++++++++
 3 files changed, 65 insertions(+)
 create mode 100644 testcases/kernel/syscalls/poll/poll04.c

diff --git a/runtest/syscalls b/runtest/syscalls
index 15df7c414..f937dd4c8 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1093,6 +1093,7 @@ pivot_root01 pivot_root01
 poll01 poll01
 poll02 poll02
 poll03 poll03
+poll04 poll04

 ppoll01 ppoll01

diff --git a/testcases/kernel/syscalls/poll/.gitignore b/testcases/kernel/syscalls/poll/.gitignore
index e3f66f4e6..7ba7262ec 100644
--- a/testcases/kernel/syscalls/poll/.gitignore
+++ b/testcases/kernel/syscalls/poll/.gitignore
@@ -1,3 +1,4 @@
 /poll01
 /poll02
 /poll03
+/poll04
diff --git a/testcases/kernel/syscalls/poll/poll04.c b/testcases/kernel/syscalls/poll/poll04.c
new file mode 100644
index 000000000..d6019d549
--- /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;
+
+static 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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v4 1/2] poll: add basic POLLHUP semantics test
  2026-02-25 11:28               ` [LTP] [PATCH v4 " Jinseok Kim
  2026-02-25 11:28                 ` [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-25 11:34                 ` Andrea Cervesato via ltp
  1 sibling, 0 replies; 19+ messages in thread
From: Andrea Cervesato via ltp @ 2026-02-25 11:34 UTC (permalink / raw)
  To: Jinseok Kim, chrubis; +Cc: ltp

Hi!

Reviewed-by: Andrea Cervesato <andrea.cervesato@suse.com>


-- 
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd
  2026-02-25 11:28                 ` [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
@ 2026-02-25 11:34                   ` Andrea Cervesato via ltp
  0 siblings, 0 replies; 19+ messages in thread
From: Andrea Cervesato via ltp @ 2026-02-25 11:34 UTC (permalink / raw)
  To: Jinseok Kim, chrubis; +Cc: ltp

Hi!

Reviewed-by: Andrea Cervesato <andrea.cervesato@suse.com>


-- 
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test
  2026-02-24 17:15           ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
  2026-02-24 17:15             ` [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
  2026-02-25 10:37             ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Cyril Hrubis
@ 2026-02-25 11:39             ` Andrea Cervesato
  2 siblings, 0 replies; 19+ messages in thread
From: Andrea Cervesato @ 2026-02-25 11:39 UTC (permalink / raw)
  To: chrubis, Jinseok Kim; +Cc: ltp

From: Andrea Cervesato <andrea.cervesato@suse.com>


On Wed, 25 Feb 2026 02:15:38 +0900, Jinseok Kim wrote:
> Add a basic poll() test to verify that POLLHUP is reported when the
> peer end of a pipe is closed.
> 
> The test creates a pipe, closes the write end, and polls the read end
> for POLLIN events. poll() is expected to return successfully and set
> POLLHUP in revents.
> 
> [...]

Applied, thanks!

[1/2] poll: add basic POLLHUP semantics test
      commit: de9426e858f1de8fbe0a8c86676a193907c6ddce
[2/2] poll: add test for POLLNVAL on invalid fd
      commit: c7a45fc28c75092dd86340c5cbf0f8124509522d

Best regards,
-- 
Andrea Cervesato <andrea.cervesato@suse.com>

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2026-02-25 11:39 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-19 16:36 [LTP] [PATCH 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
2026-02-19 16:36 ` [LTP] [PATCH 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
2026-02-20 10:05   ` Cyril Hrubis
2026-02-21 13:33     ` [LTP] [PATCH v2 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
2026-02-21 13:40     ` Jinseok Kim
2026-02-21 13:40       ` [LTP] [PATCH v2 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
2026-02-24 15:36         ` Cyril Hrubis
2026-02-24 17:15           ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Jinseok Kim
2026-02-24 17:15             ` [LTP] [PATCH v3 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
2026-02-25 10:36               ` Cyril Hrubis
2026-02-25 10:37             ` [LTP] [PATCH v3 1/2] poll: add basic POLLHUP semantics test Cyril Hrubis
2026-02-25 11:28               ` [LTP] [PATCH v4 " Jinseok Kim
2026-02-25 11:28                 ` [LTP] [PATCH v4 2/2] poll: add test for POLLNVAL on invalid fd Jinseok Kim
2026-02-25 11:34                   ` Andrea Cervesato via ltp
2026-02-25 11:34                 ` [LTP] [PATCH v4 1/2] poll: add basic POLLHUP semantics test Andrea Cervesato via ltp
2026-02-25 11:39             ` [LTP] [PATCH v3 " Andrea Cervesato
2026-02-24 15:31       ` [LTP] [PATCH v2 " Cyril Hrubis
2026-02-24 17:02         ` Jinseok Kim
2026-02-20  9:51 ` [LTP] [PATCH " Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox