From nobody Fri Mar 20 07:16:15 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fcYl411lpz6VVh0 for ; Fri, 20 Mar 2026 07:16:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fcYl34SfXz4L2C for ; Fri, 20 Mar 2026 07:16:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773990975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3fLk8gqLLmgQ/B9QDsDUMfnViZMZx4O4plWwCrsJmj8=; b=T/u68lBIiVgeyNNq4CdVVfy9Twif67TgkWs64KvQp/U8ENCsF+7TgEpQmRLuZXjAq6Kcg4 MGq3kdph3BGYe3zZZvOiSRnU/LmakWr89DT6iZ+Kn9HE8eN1vH+5//zWFDhWkqkr0UYnF1 I/dDehHvpbMn+gI/81fXslxU6TqTwJS7XQCNEr5Rzezdj1+PuMd6+VmcdrEtiGGKxLslC9 xXIdCxQo+CXTrfP5ivsWHmr+XRM2iKaEurkerQxd0Vd/QrD7GVzE5hMbGFfpmNncqfzqz+ TX3+LA+4V4u8GaY3MUnyNnR1DJDDAszbbbbbuk7Rkmi/B2+ULttTOjVr50Q5IQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773990975; a=rsa-sha256; cv=none; b=uonryOGus1amZJiOKfhssbaxfMPaZGD+xLJVJVR5RBiHwuzNPB5uJDkv8xiGgGh9pNdsLJ N99FEFHvr7O2cxeC9LlWJ2VsOVligp5equCrN593SfOqc6xdAtlqfC0Ks4C9IxEbO5z5V5 Cqr1qcNmPst+scROsBkxKPQv+kaElvEy7QekQTXQaVSTBShuBANtlX2yvJcoPgEVc/I47V 3dyxINd/ufrjEvaj9PvNvLRxazrXf8d7plRRJA+kZSbZiFiqrYb3+oLDKSRefdSTBiZ7ol 7wL6ovvby/K58CY3s44RbaNrRi15+KdQm3ccaxlG0FTq4BbAHlzDJmojvBOq7g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773990975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3fLk8gqLLmgQ/B9QDsDUMfnViZMZx4O4plWwCrsJmj8=; b=iXpKFZDqF13EXx+NR8q2rhzcEDQs+yUDx3s51NeemLfslCAKSM7Ctxo/GFufMn+oF6pRU9 30WuNoWFT58P+MFbt2CSuO2OmR3ztbTVYPivlT1pw72aMuIJiLcbU0wAAS1jLkm08+pynk njySN+gXY9nHrgByqcb/vFTZO3/95WFGOwKSl3aVFpVtBpgrYmupOvlNxcNNfs0p6o2zbj 0ZMjMsewpjwizUqYWsrpKU1rnGgRXdleztvPcc0KaEgPOkDoys24d1W8VpQSWDWTjxft5y b3mWCEX1fCi28JSTVrGmB6SN8Fj2X6RHAVELgcNJxSX6rKhiQhygJxL/pN1z8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fcYl33YbJz1SV for ; Fri, 20 Mar 2026 07:16:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b7c9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 20 Mar 2026 07:16:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jake Freeland Subject: git: e3799530b3ba - main - sys/time: Add saturating sbt conversions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e3799530b3ba38567f8052b9e107884609fc71ea Auto-Submitted: auto-generated Date: Fri, 20 Mar 2026 07:16:15 +0000 Message-Id: <69bcf43f.3b7c9.2d53e25c@gitrepo.freebsd.org> The branch main has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=e3799530b3ba38567f8052b9e107884609fc71ea commit e3799530b3ba38567f8052b9e107884609fc71ea Author: Jake Freeland AuthorDate: 2026-03-20 06:33:20 +0000 Commit: Jake Freeland CommitDate: 2026-03-20 07:15:08 +0000 sys/time: Add saturating sbt conversions When converting from timespec to sbintime, the timespec's 64-bit tv_sec component is shifted to the left 32 bits, causing any information in the upper 32 bits to be lost. This data loss during conversion can turn timespecs with very large tv_sec counters into sbintimes that represent much smaller time durations. Add tstosbt_sat() and tvtosbt_sat(), which are saturating versions of tstosbt and tvtosbt. With these routines, any overflow resulting from the conversion is clamped to [-SBT_MAX - 1, SBT_MAX]. Reviewed by: imp, markj Differential Revision: https://reviews.freebsd.org/D55791 MFC after: 2 weeks --- sys/sys/time.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/sys/time.h b/sys/sys/time.h index d3a19ebfc811..707565b6a6f1 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -352,6 +352,16 @@ tstosbt(struct timespec _ts) return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec)); } +static __inline sbintime_t +tstosbt_sat(struct timespec _ts) +{ + if (_ts.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_ts.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tstosbt(_ts)); +} + static __inline struct timeval sbttotv(sbintime_t _sbt) { @@ -368,6 +378,17 @@ tvtosbt(struct timeval _tv) return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec)); } + +static __inline sbintime_t +tvtosbt_sat(struct timeval _tv) +{ + if (_tv.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_tv.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tvtosbt(_tv)); +} + #endif /* __BSD_VISIBLE */ #ifdef _KERNEL