diff --git a/lib/libc_r/uthread/uthread_kern.c b/lib/libc_r/uthread/uthread_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libc_r/uthread/uthread_kern.c +++ b/lib/libc_r/uthread/uthread_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to diff --git a/lib/libkse/thread/thr_kern.c b/lib/libkse/thread/thr_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libkse/thread/thr_kern.c +++ b/lib/libkse/thread/thr_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libpthread/thread/thr_kern.c +++ b/lib/libpthread/thread/thr_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to