[PATCH 16/22] selftests/coredump: handle edge-triggered epoll correctly

Christian Brauner posted 22 patches 3 months, 1 week ago
[PATCH 16/22] selftests/coredump: handle edge-triggered epoll correctly
Posted by Christian Brauner 3 months, 1 week ago
by putting the file descriptor into non-blocking mode.

Signed-off-by: Christian Brauner <brauner@kernel.org>
---
 tools/testing/selftests/coredump/coredump_test_helpers.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tools/testing/selftests/coredump/coredump_test_helpers.c b/tools/testing/selftests/coredump/coredump_test_helpers.c
index 7512a8ef73d3..116c797090a1 100644
--- a/tools/testing/selftests/coredump/coredump_test_helpers.c
+++ b/tools/testing/selftests/coredump/coredump_test_helpers.c
@@ -291,6 +291,14 @@ void process_coredump_worker(int fd_coredump, int fd_peer_pidfd, int fd_core_fil
 	int epfd = -1;
 	int exit_code = EXIT_FAILURE;
 	struct epoll_event ev;
+	int flags;
+
+	/* Set socket to non-blocking mode for edge-triggered epoll */
+	flags = fcntl(fd_coredump, F_GETFL, 0);
+	if (flags < 0)
+		goto out;
+	if (fcntl(fd_coredump, F_SETFL, flags | O_NONBLOCK) < 0)
+		goto out;
 
 	epfd = epoll_create1(0);
 	if (epfd < 0)

-- 
2.47.3
Re: [PATCH 16/22] selftests/coredump: handle edge-triggered epoll correctly
Posted by Alexander Mikhalitsyn 3 months ago
Am Di., 28. Okt. 2025 um 09:47 Uhr schrieb Christian Brauner
<brauner@kernel.org>:
>
> by putting the file descriptor into non-blocking mode.
>
> Signed-off-by: Christian Brauner <brauner@kernel.org>

Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>

> ---
>  tools/testing/selftests/coredump/coredump_test_helpers.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/tools/testing/selftests/coredump/coredump_test_helpers.c b/tools/testing/selftests/coredump/coredump_test_helpers.c
> index 7512a8ef73d3..116c797090a1 100644
> --- a/tools/testing/selftests/coredump/coredump_test_helpers.c
> +++ b/tools/testing/selftests/coredump/coredump_test_helpers.c
> @@ -291,6 +291,14 @@ void process_coredump_worker(int fd_coredump, int fd_peer_pidfd, int fd_core_fil
>         int epfd = -1;
>         int exit_code = EXIT_FAILURE;
>         struct epoll_event ev;
> +       int flags;
> +
> +       /* Set socket to non-blocking mode for edge-triggered epoll */
> +       flags = fcntl(fd_coredump, F_GETFL, 0);
> +       if (flags < 0)
> +               goto out;
> +       if (fcntl(fd_coredump, F_SETFL, flags | O_NONBLOCK) < 0)
> +               goto out;
>
>         epfd = epoll_create1(0);
>         if (epfd < 0)
>
> --
> 2.47.3
>