[Bug 264131] 2nd and subsequent events on a repeating EVFILT_TIMER are delivered with twice the requested timer period

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 25 May 2022 00:19:11 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264131

--- Comment #2 from commit-hook@FreeBSD.org ---
A commit in branch main references this bug:

URL:
https://cgit.FreeBSD.org/src/commit/?id=524dadf7a8725dea144571843e611dbdbd59d668

commit 524dadf7a8725dea144571843e611dbdbd59d668
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2022-05-25 00:14:33 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2022-05-25 00:14:33 +0000

    kevent: Fix an off-by-one in filt_timerexpire_l()

    Suppose a periodic kevent timer fires close to its deadline, so that
    now - kc->next is small.  Then delta ends up being 1, and the next timer
    deadline is set to (delta + 1) * kc->to, where kc->to is the timer
    period.  This means that the timer fires at half of the requested rate,
    and the value returned in kn_data is similarly inaccurate.

    PR:             264131
    Fixes:          7cb40543e964 ("filt_timerexpire: do not iterate over the
interval")
    Reviewed by:    kib
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D35313

 sys/kern/kern_event.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
You are receiving this mail because:
You are the assignee for the bug.