Linux Test Project
 help / color / mirror / Atom feed
* [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test
@ 2025-06-03 15:22 Martin Doucha
  2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Martin Doucha @ 2025-06-03 15:22 UTC (permalink / raw)
  To: ltp

There seems to be a regression in kernel v6.14 where epoll_pwait2()
interprets very small timeout values (~1000ns) as infinity and waits
for events forever. This patchset adds regression test for this bug
and a necessary refactor for do_epoll_pwait() to allow high precision
timeouts.

Martin Doucha (2):
  epoll_pwait: Refactor timeout to struct timespec
  Add regression test for epoll_pwait2() timeout

 runtest/syscalls                              |  1 +
 .../kernel/syscalls/epoll_pwait/.gitignore    |  1 +
 .../syscalls/epoll_pwait/epoll_pwait01.c      |  4 +-
 .../syscalls/epoll_pwait/epoll_pwait02.c      |  2 +-
 .../syscalls/epoll_pwait/epoll_pwait03.c      |  9 +-
 .../syscalls/epoll_pwait/epoll_pwait04.c      |  2 +-
 .../syscalls/epoll_pwait/epoll_pwait06.c      | 87 +++++++++++++++++++
 .../syscalls/epoll_pwait/epoll_pwait_var.h    | 22 ++---
 8 files changed, 110 insertions(+), 18 deletions(-)
 create mode 100644 testcases/kernel/syscalls/epoll_pwait/epoll_pwait06.c

-- 
2.49.0


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

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

* [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec
  2025-06-03 15:22 [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Martin Doucha
@ 2025-06-03 15:22 ` Martin Doucha
  2025-06-04  6:35   ` Petr Vorel
  2025-06-04  7:01   ` Andrea Cervesato via ltp
  2025-06-03 15:22 ` [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout Martin Doucha
  2025-06-04  7:34 ` [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Petr Vorel
  2 siblings, 2 replies; 10+ messages in thread
From: Martin Doucha @ 2025-06-03 15:22 UTC (permalink / raw)
  To: ltp

Support higher precision timeout in do_epoll_pwait() by passing struct
timespec instead of int value in milliseconds. Only one test actually
uses the parameter.

Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---

Changes since v1: None

 .../syscalls/epoll_pwait/epoll_pwait01.c      |  4 ++--
 .../syscalls/epoll_pwait/epoll_pwait02.c      |  2 +-
 .../syscalls/epoll_pwait/epoll_pwait03.c      |  9 +++++---
 .../syscalls/epoll_pwait/epoll_pwait04.c      |  2 +-
 .../syscalls/epoll_pwait/epoll_pwait_var.h    | 22 +++++++++----------
 5 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait01.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait01.c
index 954e77314..012ba1562 100644
--- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait01.c
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait01.c
@@ -30,7 +30,7 @@ static void sighandler(int sig LTP_ATTRIBUTE_UNUSED) {}
 
 static void verify_sigmask(void)
 {
-	TEST(do_epoll_pwait(efd, &e, 1, -1, &signalset));
+	TEST(do_epoll_pwait(efd, &e, 1, NULL, &signalset));
 
 	if (TST_RET != 1) {
 		tst_res(TFAIL, "do_epoll_pwait() returned %li, expected 1",
@@ -43,7 +43,7 @@ static void verify_sigmask(void)
 
 static void verify_nonsigmask(void)
 {
-	TST_EXP_FAIL(do_epoll_pwait(efd, &e, 1, -1, NULL), EINTR,
+	TST_EXP_FAIL(do_epoll_pwait(efd, &e, 1, NULL, NULL), EINTR,
 		     "do_epoll_pwait() without sigmask");
 }
 
diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait02.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait02.c
index 069620c5d..a27c7db9e 100644
--- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait02.c
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait02.c
@@ -19,7 +19,7 @@ static struct epoll_event e;
 
 static void run(void)
 {
-	TEST(do_epoll_pwait(efd, &e, 1, -1, NULL));
+	TEST(do_epoll_pwait(efd, &e, 1, NULL, NULL));
 
 	if (TST_RET == 1) {
 		tst_res(TPASS, "do_epoll_pwait() succeeded");
diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
index 8217f9f80..572d347f1 100644
--- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
@@ -13,17 +13,20 @@
 #include "tst_timer_test.h"
 #include "epoll_pwait_var.h"
 
-#define USEC_PER_MSEC (1000L)
+#define USEC_PER_NSEC (1000L)
+#define USEC_PER_SEC (1000000L)
 
 static int efd, sfd[2];
 static struct epoll_event e;
 
 int sample_fn(int clk_id, long long usec)
 {
-	unsigned int ms = usec / USEC_PER_MSEC;
+	struct timespec ts;
 
+	ts.tv_sec = usec / USEC_PER_SEC;
+	ts.tv_nsec = (usec % USEC_PER_SEC) * USEC_PER_NSEC;
 	tst_timer_start(clk_id);
-	TEST(do_epoll_pwait(efd, &e, 1, ms, NULL));
+	TEST(do_epoll_pwait(efd, &e, 1, &ts, NULL));
 	tst_timer_stop();
 	tst_timer_sample();
 
diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait04.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait04.c
index cc1d04e6b..b399225b9 100644
--- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait04.c
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait04.c
@@ -20,7 +20,7 @@ static void *bad_addr;
 
 static void run(void)
 {
-	TST_EXP_FAIL(do_epoll_pwait(efd, &e, 1, -1, bad_addr),
+	TST_EXP_FAIL(do_epoll_pwait(efd, &e, 1, NULL, bad_addr),
 		     EFAULT, "with an invalid sigmask pointer");
 }
 
diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
index 58a3f15a2..454e80a87 100644
--- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
@@ -14,22 +14,22 @@
 #define NSEC_PER_MSEC (1000000L)
 
 static int do_epoll_pwait(int epfd, struct epoll_event *events, int
-	maxevents, int timeout, const sigset_t *sigmask)
+	maxevents, struct timespec *timeout, const sigset_t *sigmask)
 {
-	if (tst_variant == 0)
-		return epoll_pwait(epfd, events, maxevents, timeout, sigmask);
+	if (tst_variant == 0) {
+		int timeout_ms = -1;
 
-	struct timespec ts;
+		if (timeout) {
+			timeout_ms = timeout->tv_sec * MSEC_PER_SEC;
+			timeout_ms += (timeout->tv_nsec + NSEC_PER_MSEC - 1) /
+				NSEC_PER_MSEC;
+		}
 
-	if (timeout < 0) {
-		return epoll_pwait2(epfd, events, maxevents, NULL, sigmask);
-	} else {
-		ts.tv_sec = timeout / MSEC_PER_SEC;
-		ts.tv_nsec = NSEC_PER_MSEC * (timeout % MSEC_PER_SEC);
+		return epoll_pwait(epfd, events, maxevents, timeout_ms,
+			sigmask);
 	}
 
-	return epoll_pwait2(epfd, events, maxevents, &ts, sigmask);
-
+	return epoll_pwait2(epfd, events, maxevents, timeout, sigmask);
 }
 
 static void epoll_pwait_init(void)
-- 
2.49.0


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

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

* [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout
  2025-06-03 15:22 [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Martin Doucha
  2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
@ 2025-06-03 15:22 ` Martin Doucha
  2025-06-04  7:01   ` Andrea Cervesato via ltp
  2025-06-04  7:29   ` Petr Vorel
  2025-06-04  7:34 ` [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Petr Vorel
  2 siblings, 2 replies; 10+ messages in thread
From: Martin Doucha @ 2025-06-03 15:22 UTC (permalink / raw)
  To: ltp

Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---

Changes since v1:
- Added kernel fix reference
- Use SAFE_EPOLL_*() functions

 runtest/syscalls                              |  1 +
 .../kernel/syscalls/epoll_pwait/.gitignore    |  1 +
 .../syscalls/epoll_pwait/epoll_pwait06.c      | 87 +++++++++++++++++++
 3 files changed, 89 insertions(+)
 create mode 100644 testcases/kernel/syscalls/epoll_pwait/epoll_pwait06.c

diff --git a/runtest/syscalls b/runtest/syscalls
index e7bc7b27b..2a968099a 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -192,6 +192,7 @@ epoll_pwait02 epoll_pwait02
 epoll_pwait03 epoll_pwait03
 epoll_pwait04 epoll_pwait04
 epoll_pwait05 epoll_pwait05
+epoll_pwait06 epoll_pwait06
 
 eventfd01 eventfd01
 eventfd02 eventfd02
diff --git a/testcases/kernel/syscalls/epoll_pwait/.gitignore b/testcases/kernel/syscalls/epoll_pwait/.gitignore
index fafb2d782..81e77b8d0 100644
--- a/testcases/kernel/syscalls/epoll_pwait/.gitignore
+++ b/testcases/kernel/syscalls/epoll_pwait/.gitignore
@@ -3,3 +3,4 @@ epoll_pwait02
 epoll_pwait03
 epoll_pwait04
 epoll_pwait05
+epoll_pwait06
diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait06.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait06.c
new file mode 100644
index 000000000..3bedc2cf5
--- /dev/null
+++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait06.c
@@ -0,0 +1,87 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2025 SUSE LLC <mdoucha@suse.cz>
+ */
+
+/*\
+ * Verify that various timeout values don't get misinterpreted as infinity
+ * by epoll_pwait() and epoll_pwait2(). Regression fixed in:
+ *
+ * commit d9ec73301099ec5975505e1c3effbe768bab9490
+ * Author: Max Kellermann <max.kellermann@ionos.com>
+ * Date:   Tue Apr 29 20:58:27 2025 +0200
+ *
+ * fs/eventpoll: fix endless busy loop after timeout has expired
+ */
+
+#include "tst_test.h"
+#include "tst_timer.h"
+#include "tst_epoll.h"
+#include "epoll_pwait_var.h"
+
+static int efd = -1;
+
+static void run(void)
+{
+	struct timespec timeout = {};
+	struct epoll_event e = {};
+
+	e.events = EPOLLIN;
+
+	TST_FD_FOREACH(fd_in) {
+		/* File descriptor types not supported by epoll */
+		switch (fd_in.type) {
+		case TST_FD_FILE:
+		case TST_FD_PATH:
+		case TST_FD_DIR:
+		case TST_FD_DEV_ZERO:
+		case TST_FD_PROC_MAPS:
+		case TST_FD_FSOPEN:
+		case TST_FD_FSPICK:
+		case TST_FD_OPEN_TREE:
+		case TST_FD_MEMFD:
+		case TST_FD_MEMFD_SECRET:
+			continue;
+		default:
+			break;
+		}
+
+		tst_res(TINFO, "Testing %s", tst_fd_desc(&fd_in));
+		timeout.tv_nsec = 1000000000;
+		SAFE_EPOLL_CTL(efd, EPOLL_CTL_ADD, fd_in.fd, &e);
+
+		do {
+			alarm(1);
+			timeout.tv_nsec /= 10;
+			do_epoll_pwait(efd, &e, 1, &timeout, NULL);
+			alarm(0);
+		} while (timeout.tv_nsec);
+
+		SAFE_EPOLL_CTL(efd, EPOLL_CTL_DEL, fd_in.fd, &e);
+	}
+
+	tst_res(TPASS, "Timeout works correctly");
+}
+
+static void setup(void)
+{
+	epoll_pwait_init();
+	efd = SAFE_EPOLL_CREATE1(0);
+}
+
+static void cleanup(void)
+{
+	if (efd >= 0)
+		SAFE_CLOSE(efd);
+}
+
+static struct tst_test test = {
+	.test_all = run,
+	.setup = setup,
+	.cleanup = cleanup,
+	.test_variants = TEST_VARIANTS,
+	.tags = (const struct tst_tag[]) {
+		{"linux-git", "d9ec73301099"},
+		{}
+	}
+};
-- 
2.49.0


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

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

* Re: [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec
  2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
@ 2025-06-04  6:35   ` Petr Vorel
  2025-06-04 12:10     ` Martin Doucha
  2025-06-04  7:01   ` Andrea Cervesato via ltp
  1 sibling, 1 reply; 10+ messages in thread
From: Petr Vorel @ 2025-06-04  6:35 UTC (permalink / raw)
  To: Martin Doucha; +Cc: ltp

Hi Martin,

> Support higher precision timeout in do_epoll_pwait() by passing struct
> timespec instead of int value in milliseconds. Only one test actually
> uses the parameter.

Ah, you mean epoll_pwait03.c.

Reviewed-by: Petr Vorel <pvorel@suse.cz>

...
> +++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
> @@ -14,22 +14,22 @@
>  #define NSEC_PER_MSEC (1000000L)

>  static int do_epoll_pwait(int epfd, struct epoll_event *events, int
> -	maxevents, int timeout, const sigset_t *sigmask)
> +	maxevents, struct timespec *timeout, const sigset_t *sigmask)
>  {
> -	if (tst_variant == 0)
> -		return epoll_pwait(epfd, events, maxevents, timeout, sigmask);
> +	if (tst_variant == 0) {
> +		int timeout_ms = -1;

very nit: I would reverse the condition to save indent for tst_variant == 0:

	if (tst_variant != 0)
		return epoll_pwait2(epfd, events, maxevents, timeout, sigmask);
...

Kind regards,
Petr

> -	struct timespec ts;
> +		if (timeout) {
> +			timeout_ms = timeout->tv_sec * MSEC_PER_SEC;
> +			timeout_ms += (timeout->tv_nsec + NSEC_PER_MSEC - 1) /
> +				NSEC_PER_MSEC;
> +		}

> -	if (timeout < 0) {
> -		return epoll_pwait2(epfd, events, maxevents, NULL, sigmask);
> -	} else {
> -		ts.tv_sec = timeout / MSEC_PER_SEC;
> -		ts.tv_nsec = NSEC_PER_MSEC * (timeout % MSEC_PER_SEC);
> +		return epoll_pwait(epfd, events, maxevents, timeout_ms,
> +			sigmask);
>  	}

> -	return epoll_pwait2(epfd, events, maxevents, &ts, sigmask);
> -
> +	return epoll_pwait2(epfd, events, maxevents, timeout, sigmask);
>  }

>  static void epoll_pwait_init(void)

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

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

* Re: [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout
  2025-06-03 15:22 ` [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout Martin Doucha
@ 2025-06-04  7:01   ` Andrea Cervesato via ltp
  2025-06-04  7:29   ` Petr Vorel
  1 sibling, 0 replies; 10+ messages in thread
From: Andrea Cervesato via ltp @ 2025-06-04  7:01 UTC (permalink / raw)
  To: Martin Doucha, ltp

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

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

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

* Re: [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec
  2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
  2025-06-04  6:35   ` Petr Vorel
@ 2025-06-04  7:01   ` Andrea Cervesato via ltp
  1 sibling, 0 replies; 10+ messages in thread
From: Andrea Cervesato via ltp @ 2025-06-04  7:01 UTC (permalink / raw)
  To: Martin Doucha, ltp

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

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

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

* Re: [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout
  2025-06-03 15:22 ` [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout Martin Doucha
  2025-06-04  7:01   ` Andrea Cervesato via ltp
@ 2025-06-04  7:29   ` Petr Vorel
  1 sibling, 0 replies; 10+ messages in thread
From: Petr Vorel @ 2025-06-04  7:29 UTC (permalink / raw)
  To: Martin Doucha; +Cc: ltp

Hi Martin,

LGTM, thanks for this regression test!

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr

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

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

* Re: [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test
  2025-06-03 15:22 [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Martin Doucha
  2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
  2025-06-03 15:22 ` [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout Martin Doucha
@ 2025-06-04  7:34 ` Petr Vorel
  2 siblings, 0 replies; 10+ messages in thread
From: Petr Vorel @ 2025-06-04  7:34 UTC (permalink / raw)
  To: Martin Doucha; +Cc: ltp

Hi Martin,

> There seems to be a regression in kernel v6.14 where epoll_pwait2()
> interprets very small timeout values (~1000ns) as infinity and waits
> for events forever. This patchset adds regression test for this bug
> and a necessary refactor for do_epoll_pwait() to allow high precision
> timeouts.

Good catch! BTW it looks to me 0a65bc27bd64 is from v6.15-rc3 (e.g. 6.15
development cycle), but it was backported to 6.14 stable as 99a0ad16dfd11
to v6.14.4. Obviously fixing commit d9ec73301099 has also been backported
(to v6.14.8).

Kind regards,
Petr


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

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

* Re: [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec
  2025-06-04  6:35   ` Petr Vorel
@ 2025-06-04 12:10     ` Martin Doucha
  2025-06-05  6:28       ` Petr Vorel
  0 siblings, 1 reply; 10+ messages in thread
From: Martin Doucha @ 2025-06-04 12:10 UTC (permalink / raw)
  To: Petr Vorel; +Cc: ltp

Hi!

On 04. 06. 25 8:35, Petr Vorel wrote:
> Hi Martin,
> 
>> Support higher precision timeout in do_epoll_pwait() by passing struct
>> timespec instead of int value in milliseconds. Only one test actually
>> uses the parameter.
> 
> Ah, you mean epoll_pwait03.c.

Yes.

> Reviewed-by: Petr Vorel <pvorel@suse.cz>
> 
> ...
>> +++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
>> @@ -14,22 +14,22 @@
>>   #define NSEC_PER_MSEC (1000000L)
> 
>>   static int do_epoll_pwait(int epfd, struct epoll_event *events, int
>> -	maxevents, int timeout, const sigset_t *sigmask)
>> +	maxevents, struct timespec *timeout, const sigset_t *sigmask)
>>   {
>> -	if (tst_variant == 0)
>> -		return epoll_pwait(epfd, events, maxevents, timeout, sigmask);
>> +	if (tst_variant == 0) {
>> +		int timeout_ms = -1;
> 
> very nit: I would reverse the condition to save indent for tst_variant == 0:

Feel free to do it during merge, but it'd be better to check 
(tst_variant == 1) instead in case there will be epoll_pwait3() in the 
future.

> 
> 	if (tst_variant != 0)
> 		return epoll_pwait2(epfd, events, maxevents, timeout, sigmask);
> ...

-- 
Martin Doucha   mdoucha@suse.cz
SW Quality Engineer
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic

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

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

* Re: [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec
  2025-06-04 12:10     ` Martin Doucha
@ 2025-06-05  6:28       ` Petr Vorel
  0 siblings, 0 replies; 10+ messages in thread
From: Petr Vorel @ 2025-06-05  6:28 UTC (permalink / raw)
  To: Martin Doucha; +Cc: ltp

Hi Martin,

...
> > > +++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait_var.h
> > > @@ -14,22 +14,22 @@
> > >   #define NSEC_PER_MSEC (1000000L)

> > >   static int do_epoll_pwait(int epfd, struct epoll_event *events, int
> > > -	maxevents, int timeout, const sigset_t *sigmask)
> > > +	maxevents, struct timespec *timeout, const sigset_t *sigmask)
> > >   {
> > > -	if (tst_variant == 0)
> > > -		return epoll_pwait(epfd, events, maxevents, timeout, sigmask);
> > > +	if (tst_variant == 0) {
> > > +		int timeout_ms = -1;

> > very nit: I would reverse the condition to save indent for tst_variant == 0:

> Feel free to do it during merge, but it'd be better to check (tst_variant ==
> 1) instead in case there will be epoll_pwait3() in the future.

Thanks for your ack + good point, changed as tst_variant == 1.
Patchset merged, thanks!

Kind regards,
Petr

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

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

end of thread, other threads:[~2025-06-05  6:28 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-03 15:22 [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Martin Doucha
2025-06-03 15:22 ` [LTP] [PATCH v2 1/2] epoll_pwait: Refactor timeout to struct timespec Martin Doucha
2025-06-04  6:35   ` Petr Vorel
2025-06-04 12:10     ` Martin Doucha
2025-06-05  6:28       ` Petr Vorel
2025-06-04  7:01   ` Andrea Cervesato via ltp
2025-06-03 15:22 ` [LTP] [PATCH v2 2/2] Add regression test for epoll_pwait2() timeout Martin Doucha
2025-06-04  7:01   ` Andrea Cervesato via ltp
2025-06-04  7:29   ` Petr Vorel
2025-06-04  7:34 ` [LTP] [PATCH v2 0/2] epoll_pwait2() timeout regression test Petr Vorel

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