Re: [PATCH v1] rust: time: fix as_micros_ceil() rounding near i64::MAX

Andreas Hindborg <[email protected]> Wed, 05 Aug 2026 13:39:43 +0200
Newsgroups org.kernel.vger.rust-for-linux
Message-ID <[email protected]>
"FUJITA Tomonori" <[email protected]> writes:

> From: FUJITA Tomonori <[email protected]>
>
> The ceiling adjustment used saturating_add(NSEC_PER_USEC - 1) before
> dividing. Once the nanosecond value gets within NSEC_PER_USEC - 1 of
> i64::MAX the addition saturates to i64::MAX, which drops the ceiling
> bias and yields a result one microsecond too small.
>
> Fixes: fae0cdc12340 ("rust: time: Introduce Delta type")
> Reported-by: Miguel Ojeda <[email protected]>
> Closes: https://lore.kernel.org/rust-for-linux/CANiq72mtS0ABA2JnT5tpz6J9c_mnxY+vyPvghV_ukngWvN8F2w@mail.gmail.com/
> Signed-off-by: FUJITA Tomonori <[email protected]>

Reviewed-by: Andreas Hindborg <[email protected]>

It took me a little while to understand this one. Perhaps a few comments
explaining the boundary conditions could be warranted here?

Best regards,
Andreas Hindborg