From b62692d3c77617747263a4cff5ea3db1ab731df0 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 9 Mar 2025 22:25:14 +0100 Subject: aio_suspend64: Fix clock discrepancy [BZ #32795] cc5d5852c65e ("y2038: Convert aio_suspend to support 64 bit time") switched from __clock_gettime (CLOCK_REALTIME, &now); to __clock_gettime64 (CLOCK_MONOTONIC, &ts);, but pthread_cond_timedwait is based on the absolute realtime clock, so migrate to using pthread_cond_clockwait to select CLOCK_MONOTONIC. Also fix AIO_MISC_WAIT into passing CLOCK_MONOTONIC to __futex_abstimed_wait64. Reviewed-by: Adhemerval Zanella --- rt/aio_suspend.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'rt') diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c index 2257cd80d4..0500029300 100644 --- a/rt/aio_suspend.c +++ b/rt/aio_suspend.c @@ -195,8 +195,9 @@ ___aio_suspend_time64 (const struct aiocb *const list[], int nent, result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts); #else struct timespec ts32 = valid_timespec64_to_timespec (ts); - result = pthread_cond_timedwait (&cond, &__aio_requests_mutex, - timeout == NULL ? NULL : &ts32); + result = __pthread_cond_clockwait (&cond, &__aio_requests_mutex, + CLOCK_MONOTONIC, + timeout == NULL ? NULL : &ts32); #endif #if PTHREAD_IN_LIBC -- cgit v1.2.3