]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME
authorKyle Evans <kevans@FreeBSD.org>
Wed, 29 Sep 2021 19:55:59 +0000 (14:55 -0500)
committerKyle Evans <kevans@FreeBSD.org>
Fri, 1 Oct 2021 02:31:24 +0000 (21:31 -0500)
commit9c999a259f00b35f0467acd351fea9157ed7e1e4
treeffc36d150038db72d1b65c54998df29a63fb2e1c
parent1b7a2680fba589daf6f700565214919cb941ab56
kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME

NOTE_ABSTIME values are converted to values relative to boottime in
filt_timervalidate(), and negative values are currently rejected.  We
don't reject times in the past in general, so clamp this up to 0 as
needed such that the timer fires immediately rather than imposing what
looks like an arbitrary restriction.

Another possible scenario is that the system clock had to be adjusted
by ~minutes or ~hours and we have less than that in terms of uptime,
making a reasonable short-timeout suddenly invalid. Firing it is still
a valid choice in this scenario so that applications can at least
expect a consistent behavior.

Reviewed by: kib, markj
Discussed with: allanjude
Differential Revision: https://reviews.freebsd.org/D32230
sys/kern/kern_event.c
tests/sys/kqueue/libkqueue/timer.c