mirror of
https://github.com/opnsense/src.git
synced 2026-02-25 11:00:15 -05:00
fix integer overflow bugs in *stosbt
68f57679d6 Fixed another class of integer overflows, but introduced a
boundary condition for 2-4s in ns conversion, 2-~4000s in us conversions
and 2-~4,000,000s in ms conversions. This was because we bogusly used
SBT_1S for the notion of 1 second, instead of the appropriate power of
10. To fix, just use the appropriate power of 10, which avoids these
overflows.
This caused some sleeps in ZFS to be on the order of an hour.
MFC: 1 day
PR: 263073
Sponsored by: Netflix
Reviewed by: asomers
Differential Revision: https://reviews.freebsd.org/D34790
This commit is contained in:
parent
f00f8b4fbd
commit
4c30b9ecd4
1 changed files with 3 additions and 3 deletions
|
|
@ -207,7 +207,7 @@ nstosbt(int64_t _ns)
|
|||
#ifdef KASSERT
|
||||
KASSERT(_ns >= 0, ("Negative values illegal for nstosbt: %jd", _ns));
|
||||
#endif
|
||||
if (_ns >= SBT_1S) {
|
||||
if (_ns >= 1000000000) {
|
||||
sb = (_ns / 1000000000) * SBT_1S;
|
||||
_ns = _ns % 1000000000;
|
||||
}
|
||||
|
|
@ -231,7 +231,7 @@ ustosbt(int64_t _us)
|
|||
#ifdef KASSERT
|
||||
KASSERT(_us >= 0, ("Negative values illegal for ustosbt: %jd", _us));
|
||||
#endif
|
||||
if (_us >= SBT_1S) {
|
||||
if (_us >= 1000000) {
|
||||
sb = (_us / 1000000) * SBT_1S;
|
||||
_us = _us % 1000000;
|
||||
}
|
||||
|
|
@ -255,7 +255,7 @@ mstosbt(int64_t _ms)
|
|||
#ifdef KASSERT
|
||||
KASSERT(_ms >= 0, ("Negative values illegal for mstosbt: %jd", _ms));
|
||||
#endif
|
||||
if (_ms >= SBT_1S) {
|
||||
if (_ms >= 1000) {
|
||||
sb = (_ms / 1000) * SBT_1S;
|
||||
_ms = _ms % 1000;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue