mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 01:30:30 -04:00
Fix VIRTUAL and PROF interval timers for short intervals, broken at r247903.
Due to the way those timers are implemented, we can't handle very short intervals. In addition to that mentioned patch caused math overflows for short intervals. To avoid that round those intervals to 1 tick. PR: kern/187668 MFC after: 1 week
This commit is contained in:
parent
57a4f20b8d
commit
d10a1df8d7
1 changed files with 8 additions and 0 deletions
|
|
@ -774,6 +774,14 @@ kern_setitimer(struct thread *td, u_int which, struct itimerval *aitv,
|
|||
timevalsub(&oitv->it_value, &ctv);
|
||||
}
|
||||
} else {
|
||||
if (aitv->it_interval.tv_sec == 0 &&
|
||||
aitv->it_interval.tv_usec != 0 &&
|
||||
aitv->it_interval.tv_usec < tick)
|
||||
aitv->it_interval.tv_usec = tick;
|
||||
if (aitv->it_value.tv_sec == 0 &&
|
||||
aitv->it_value.tv_usec != 0 &&
|
||||
aitv->it_value.tv_usec < tick)
|
||||
aitv->it_value.tv_usec = tick;
|
||||
PROC_SLOCK(p);
|
||||
*oitv = p->p_stats->p_timer[which];
|
||||
p->p_stats->p_timer[which] = *aitv;
|
||||
|
|
|
|||
Loading…
Reference in a new issue