Linux Test Project
 help / color / mirror / Atom feed
* [LTP] [PATCH v2] openposix: timer_*/speculative: Skip untestable optional behavior on Linux
@ 2026-08-19  9:31 Avinesh Kumar via ltp
  2026-08-19 10:33 ` [LTP] " linuxtestproject.agent
  0 siblings, 1 reply; 5+ messages in thread
From: Avinesh Kumar via ltp @ 2026-08-19  9:31 UTC (permalink / raw)
  To: ltp

From: Avinesh Kumar <avinesh.kumar@suse.com>

timer_delete/speculative/5-{1,2}, timer_getoverrun/speculative/6-{1,2,3},
timer_gettime/speculative/6-{1,2,3}, and timer_settime/speculative/12-{1,2,3}
all test EINVAL for an invalid timerid, which POSIX Issue 6/TC2 made
optional rather than required.[0][1]
Linux does not implement this optional behavior, so skip it there with
PTS_UNSUPPORTED and leave the test intact for implementations that do.

[0] https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_getoverrun.html
[1] https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_delete.html

Suggested-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Avinesh Kumar <avinesh.kumar@suse.com>
---
 .../conformance/interfaces/timer_delete/speculative/5-1.c    | 5 +++++
 .../conformance/interfaces/timer_delete/speculative/5-2.c    | 5 +++++
 .../interfaces/timer_getoverrun/speculative/6-1.c            | 5 +++++
 .../interfaces/timer_getoverrun/speculative/6-2.c            | 5 +++++
 .../interfaces/timer_getoverrun/speculative/6-3.c            | 5 +++++
 .../conformance/interfaces/timer_gettime/speculative/6-1.c   | 5 +++++
 .../conformance/interfaces/timer_gettime/speculative/6-2.c   | 5 +++++
 .../conformance/interfaces/timer_gettime/speculative/6-3.c   | 5 +++++
 .../conformance/interfaces/timer_settime/speculative/12-1.c  | 5 +++++
 .../conformance/interfaces/timer_settime/speculative/12-2.c  | 5 +++++
 .../conformance/interfaces/timer_settime/speculative/12-3.c  | 5 +++++
 11 files changed, 55 insertions(+)

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-1.c
index 912cf5800e6f..7c776236d31d 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-1.c
@@ -19,6 +19,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	timer_t tid;
 	int tval = BOGUSTIMERID;
 	tid = (timer_t) & tval;
@@ -37,4 +41,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 
 	printf("timer_delete() did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-2.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-2.c
index 74eeb46793b2..63574bfd58f7 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-2.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_delete/speculative/5-2.c
@@ -34,6 +34,10 @@ static void handler(int signo PTS_ATTRIBUTE_UNUSED)
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	struct sigaction act;
 	timer_t tid;
@@ -91,4 +95,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-1.c
index 6e18560e5084..31c8a4df3d17 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-1.c
@@ -19,6 +19,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	timer_t tid;
 	int tval = BOGUSTID;
 	tid = (timer_t) & tval;
@@ -36,4 +40,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-2.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-2.c
index 2d7f3967ced1..3004b1eb80ba 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-2.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-2.c
@@ -26,6 +26,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 
@@ -55,4 +59,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-3.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-3.c
index 933a31dcd3e7..bd443e7629aa 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-3.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_getoverrun/speculative/6-3.c
@@ -23,6 +23,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 
@@ -47,4 +51,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
index d09c2f70901d..82a2f0b508dd 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
@@ -19,6 +19,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	timer_t tid;
 	struct itimerspec its;
 	int tval = BOGUSTID;
@@ -35,4 +39,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-2.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-2.c
index 88a8d221914b..df103dd78b9d 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-2.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-2.c
@@ -21,6 +21,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 	struct itimerspec its;
@@ -45,4 +49,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-3.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-3.c
index ef7c37f5eb99..4b901e0d4329 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-3.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-3.c
@@ -21,6 +21,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 	struct itimerspec its;
@@ -49,4 +53,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-1.c
index 5d4e1dda30ba..e20766ba5838 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-1.c
@@ -18,6 +18,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	timer_t tid;
 	struct itimerspec its;
 	int tval = BOGUSTID;
@@ -39,4 +43,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-2.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-2.c
index 3b6901c25dc7..83c7aa10c7ce 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-2.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-2.c
@@ -25,6 +25,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 	struct itimerspec its;
@@ -54,4 +58,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-3.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-3.c
index 04ceb2745af3..c4c469410874 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-3.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-3.c
@@ -23,6 +23,10 @@
 
 int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
+#ifdef __linux__
+	printf("Linux does not implement this optional behavior\n");
+	return PTS_UNSUPPORTED;
+#else
 	struct sigevent ev;
 	timer_t tid;
 	struct itimerspec its;
@@ -56,4 +60,5 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 	}
 	printf("fcn did not return -1\n");
 	return PTS_PASS;
+#endif
 }
-- 
2.55.0


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

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

* Re: [LTP] openposix: timer_*/speculative: Skip untestable optional behavior on Linux
  2026-08-19  9:31 [LTP] [PATCH v2] openposix: timer_*/speculative: Skip untestable optional behavior on Linux Avinesh Kumar via ltp
@ 2026-08-19 10:33 ` linuxtestproject.agent
  2026-08-27  7:07   ` Andrea Cervesato via ltp
  2026-08-31 10:15   ` Cyril Hrubis
  0 siblings, 2 replies; 5+ messages in thread
From: linuxtestproject.agent @ 2026-08-19 10:33 UTC (permalink / raw)
  To: Avinesh Kumar; +Cc: ltp

Hi Avinesh,

On Wed, 19 Aug 2026, Avinesh Kumar wrote:
> openposix: timer_*/speculative: Skip untestable optional behavior on Linux

> +#ifdef __linux__
> +	printf("Linux does not implement this optional behavior\n");
> +	return PTS_UNSUPPORTED;
> +#else

Could these branches be removed from all eleven tests? Linux 7.2 uses
scoped_timer_get_or_fail() to return -EINVAL for invalid timer IDs in
timer_gettime(), timer_getoverrun(), timer_settime(), and timer_delete().
The installed man pages document the same EINVAL result.

More directly, every pre-patch test reports errno == EINVAL and returns
PTS_PASS when built and run on Linux. The platform check therefore replaces
working coverage with PTS_UNSUPPORTED, and the quoted runtime message is not
accurate.

Verdict - Needs revision

---
Note:

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

Regards,
LTP AI Reviewer

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

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

* Re: [LTP] openposix: timer_*/speculative: Skip untestable optional behavior on Linux
  2026-08-19 10:33 ` [LTP] " linuxtestproject.agent
@ 2026-08-27  7:07   ` Andrea Cervesato via ltp
  2026-08-31 10:15   ` Cyril Hrubis
  1 sibling, 0 replies; 5+ messages in thread
From: Andrea Cervesato via ltp @ 2026-08-27  7:07 UTC (permalink / raw)
  To: linuxtestproject.agent; +Cc: ltp

Hi Avinesh,

> > +#ifdef __linux__
> > +	printf("Linux does not implement this optional behavior\n");
> > +	return PTS_UNSUPPORTED;
> > +#else
> 
> Could these branches be removed from all eleven tests? Linux 7.2 uses
> scoped_timer_get_or_fail() to return -EINVAL for invalid timer IDs in
> timer_gettime(), timer_getoverrun(), timer_settime(), and timer_delete().
> The installed man pages document the same EINVAL result.

can you please take a look at this?

--
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] 5+ messages in thread

* Re: [LTP] openposix: timer_*/speculative: Skip untestable optional behavior on Linux
  2026-08-19 10:33 ` [LTP] " linuxtestproject.agent
  2026-08-27  7:07   ` Andrea Cervesato via ltp
@ 2026-08-31 10:15   ` Cyril Hrubis
  2026-08-31 16:38     ` Avinesh Kumar via ltp
  1 sibling, 1 reply; 5+ messages in thread
From: Cyril Hrubis @ 2026-08-31 10:15 UTC (permalink / raw)
  To: linuxtestproject.agent; +Cc: ltp

Hi!
> > openposix: timer_*/speculative: Skip untestable optional behavior on Linux
> 
> > +#ifdef __linux__
> > +	printf("Linux does not implement this optional behavior\n");
> > +	return PTS_UNSUPPORTED;
> > +#else
> 
> Could these branches be removed from all eleven tests? Linux 7.2 uses
> scoped_timer_get_or_fail() to return -EINVAL for invalid timer IDs in
> timer_gettime(), timer_getoverrun(), timer_settime(), and timer_delete().
> The installed man pages document the same EINVAL result.
> 
> More directly, every pre-patch test reports errno == EINVAL and returns
> PTS_PASS when built and run on Linux. The platform check therefore replaces
> working coverage with PTS_UNSUPPORTED, and the quoted runtime message is not
> accurate.

That's the kernel part, apparently it's more complex in libc.

Libc has two types of timer_t values, either it's a directly kernel
timer id (small int) or a pointer to a structure that holds the id.

The timer libc functions, before calling the kernel syscall, convert the
libc timer id into kernel timer id with:

static inline kernel_timer_t
timerid_to_kernel_timer (timer_t timerid)
{
  if (timer_is_sigev_thread (timerid))
    return timerid_to_timer (timerid)->ktimerid;
  else
    return (kernel_timer_t) ((uintptr_t) timerid);
}

The library does a bit of magic with the pointers:

https://codebrowser.dev/glibc/glibc/sysdeps/unix/sysv/linux/kernel-posix-timers.h.html

But overall it checks the MSB bit of the pointer to figure out if it's
kernel timer id which should be passed verbatim, or a structure that
needs to be dereferenced.

Looking at the timer_gettime/speculative/6-1.c we do pass a pointer to
the stack (instead of the invalid value) which on 32bit may be an
address with the MSB bit set. So this triggers undefined behavior, since
glibc thinks it's a pointer to it's internal data structure, but the
real pointer the glibc exports as the timer is bit-shifted. Hence we
access random and possibly invalid address. With some luck that address
is accesible and contains non-zero data and we end up passing invalid
timer ID to the kernel, but when I straced the test, the value was
pretty much random.

With that in mind, we can fix the test with passing the BOGUSID instead
of random stack pointer:

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
index d09c2f709..c35dd816f 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
@@ -21,8 +21,7 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
 {
        timer_t tid;
        struct itimerspec its;
-       int tval = BOGUSTID;
-       tid = (timer_t) & tval;
+       tid = (timer_t) BOGUSTID;
        if (timer_gettime(tid, &its) == -1) {
                if (EINVAL == errno) {
                        printf("fcn returned -1 and errno==EINVAL\n");


-- 
Cyril Hrubis
chrubis@suse.cz

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

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

* Re: [LTP] openposix: timer_*/speculative: Skip untestable optional behavior on Linux
  2026-08-31 10:15   ` Cyril Hrubis
@ 2026-08-31 16:38     ` Avinesh Kumar via ltp
  0 siblings, 0 replies; 5+ messages in thread
From: Avinesh Kumar via ltp @ 2026-08-31 16:38 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: ltp

Hi Cyril,

On 8/31/26 12:15 PM, Cyril Hrubis wrote:
> Hi!
>>> openposix: timer_*/speculative: Skip untestable optional behavior on Linux
>>
>>> +#ifdef __linux__
>>> +	printf("Linux does not implement this optional behavior\n");
>>> +	return PTS_UNSUPPORTED;
>>> +#else
>>
>> Could these branches be removed from all eleven tests? Linux 7.2 uses
>> scoped_timer_get_or_fail() to return -EINVAL for invalid timer IDs in
>> timer_gettime(), timer_getoverrun(), timer_settime(), and timer_delete().
>> The installed man pages document the same EINVAL result.
>>
>> More directly, every pre-patch test reports errno == EINVAL and returns
>> PTS_PASS when built and run on Linux. The platform check therefore replaces
>> working coverage with PTS_UNSUPPORTED, and the quoted runtime message is not
>> accurate.
> 
> That's the kernel part, apparently it's more complex in libc.
> 
> Libc has two types of timer_t values, either it's a directly kernel
> timer id (small int) or a pointer to a structure that holds the id.
> 
> The timer libc functions, before calling the kernel syscall, convert the
> libc timer id into kernel timer id with:
> 
> static inline kernel_timer_t
> timerid_to_kernel_timer (timer_t timerid)
> {
>    if (timer_is_sigev_thread (timerid))
>      return timerid_to_timer (timerid)->ktimerid;
>    else
>      return (kernel_timer_t) ((uintptr_t) timerid);
> }
> 
> The library does a bit of magic with the pointers:
> 
> https://codebrowser.dev/glibc/glibc/sysdeps/unix/sysv/linux/kernel-posix-timers.h.html
> 
> But overall it checks the MSB bit of the pointer to figure out if it's
> kernel timer id which should be passed verbatim, or a structure that
> needs to be dereferenced.
> 
> Looking at the timer_gettime/speculative/6-1.c we do pass a pointer to
> the stack (instead of the invalid value) which on 32bit may be an
> address with the MSB bit set. So this triggers undefined behavior, since
> glibc thinks it's a pointer to it's internal data structure, but the
> real pointer the glibc exports as the timer is bit-shifted. Hence we
> access random and possibly invalid address. With some luck that address
> is accesible and contains non-zero data and we end up passing invalid
> timer ID to the kernel, but when I straced the test, the value was
> pretty much random.
> 

I was also trying to understand the sign bit usage and bit shifting
magic in this glibc code, causing this issue. Thanks for explaining
this clearly. I have send revised patch -
https://lore.kernel.org/ltp/20260831163310.137399-1-avinesh.kumar@suse.com/T/#u


Regards,
Avinesh

> With that in mind, we can fix the test with passing the BOGUSID instead
> of random stack pointer:
> 
> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
> index d09c2f709..c35dd816f 100644
> --- a/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/timer_gettime/speculative/6-1.c
> @@ -21,8 +21,7 @@ int test_main(int argc PTS_ATTRIBUTE_UNUSED, char **argv PTS_ATTRIBUTE_UNUSED)
>   {
>          timer_t tid;
>          struct itimerspec its;
> -       int tval = BOGUSTID;
> -       tid = (timer_t) & tval;
> +       tid = (timer_t) BOGUSTID;
>          if (timer_gettime(tid, &its) == -1) {
>                  if (EINVAL == errno) {
>                          printf("fcn returned -1 and errno==EINVAL\n");
> 



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

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

end of thread, other threads:[~2026-08-31 16:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19  9:31 [LTP] [PATCH v2] openposix: timer_*/speculative: Skip untestable optional behavior on Linux Avinesh Kumar via ltp
2026-08-19 10:33 ` [LTP] " linuxtestproject.agent
2026-08-27  7:07   ` Andrea Cervesato via ltp
2026-08-31 10:15   ` Cyril Hrubis
2026-08-31 16:38     ` Avinesh Kumar via ltp

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