mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-03 22:55:07 -05:00
sched: don't return currently used timeout ID
To avoid problems in the very unlikely case where a timeout is so long and new IDs are allocated so frequently that they would have a chance to overflow and catch up with it, make sure before returning new ID that it's currently not in use.
This commit is contained in:
10
sched.c
10
sched.c
@@ -281,9 +281,17 @@ release_tqe(TimerQueueEntry *node)
|
||||
static SCH_TimeoutID
|
||||
get_new_tqe_id(void)
|
||||
{
|
||||
TimerQueueEntry *ptr;
|
||||
|
||||
try_again:
|
||||
next_tqe_id++;
|
||||
if (!next_tqe_id)
|
||||
next_tqe_id++;
|
||||
goto try_again;
|
||||
|
||||
/* Make sure the ID isn't already used */
|
||||
for (ptr = timer_queue.next; ptr != &timer_queue; ptr = ptr->next)
|
||||
if (ptr->id == next_tqe_id)
|
||||
goto try_again;
|
||||
|
||||
return next_tqe_id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user