From nobody Fri Apr 3 15:27:27 2026 X-Original-To: dev-commits-src-branches@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 4fnMzM4ZFdz6Ygdr for ; Fri, 03 Apr 2026 15:27:27 +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 4fnMzM28q3z3hTl for ; Fri, 03 Apr 2026 15:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230047; 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=UdnCh42sRRXVwsO3fI8Hr1u8I0Xq1Pzo/zrTMIcru2E=; b=T/7yV7ZVkmlXKKWAwHoMQe751+NzFIJ9YPzJrcuPmWj+Ze7PXcLJQeL6Cii9l1208jlyGs oew1Zjatmu/K0SQSACf5d7jv0yr0nAVK91gFnHxHljj6eieBdYGsAM6F/QF66UeI5cm/gG N61zlXz00tfsvhzCk2To7VwQpPw/L+EHtPbRyy7ul+RPzWZlQ0zh4SKTSW3502b5qrQnyL uahbYvH/yU2BlXEn9tG/Gr9HDSy9sbUMseP60qckkrH5JL4UB+V4UjDEf6GdH3KqwovquW CWUq5fvsAUXUsDBF9rfbTdth0rRXS488W8HOS1kJTFDgwFR1XSwRylPFFi+jeQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230047; a=rsa-sha256; cv=none; b=PoBULgyMZfZgMKSmDuHON+68djFYNPgQSSBsozGHE4f+pI8Urf+w21qqRRi208nILuRQ1x 2DvycuYaDdbg4XuBSvgZVcLJaayCdtsQ2fcjDx9MvkiH3BkyfmhCgiXmmt/s4W1rCSj6YW osUwv9t9ABUzdIdeHMj2YHUXN+PQzfbgJdgp4WOPw1FfQ4lFfHjtk5S31kPOX6bNpaskna Dav5eI84cK65epZVtEn5I3CpUygyJl6+0hTVWKm5K4TIeKwYZQc+n3ep+8mhMtd3FdTmPI +ffKQczhnOOzXpyHNJgl/8YGJfUSntJ+H/uxBB1+yxe6XefLtonnI7llB49KcQ== 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=1775230047; 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=UdnCh42sRRXVwsO3fI8Hr1u8I0Xq1Pzo/zrTMIcru2E=; b=WvB3eRQfXcSkkU+C1TAjzm5Nyo0oHcq8MRtZg9iT9XLHyY7/GYHIo0NYUIByhjoiFeIlIS 0dKLoKv7/0o+I6f/O6E12hQkitGimwcr2yTDCAxYVmSAYhDh9+brQkK4KwdbRgY7lXYjEi uJF5lTqdmOCfNfdb7LKz1T0dEn2ziS9Fhawmokay92JnNW9u6ntW5hqZDmlfGG3LSPhqOL rY+Pc3Kofepqtxm/Ok6dS+SDMri4fKm7L5PIdjDdfrKh0Z13qAsDxKExrv3dXbked9lrDx nqOBy+RfaaisnQtvDlETQHFfwa1Le4CWYvWD1EGPUykFe3DzimDxIM2Evxpeyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzM1VhNzv1R for ; Fri, 03 Apr 2026 15:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f9b9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: a5a4a2be69f9 - stable/14 - sys/time: Add saturating sbt conversions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/14 X-Git-Reftype: branch X-Git-Commit: a5a4a2be69f9696953afa6eb586c62ed96611c37 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:27 +0000 Message-Id: <69cfdc5f.3f9b9.80896b@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=a5a4a2be69f9696953afa6eb586c62ed96611c37 commit a5a4a2be69f9696953afa6eb586c62ed96611c37 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:20 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +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 (cherry picked from commit e3799530b3ba38567f8052b9e107884609fc71ea) --- sys/sys/time.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/sys/time.h b/sys/sys/time.h index 31020bbdfdd8..66fbd2dd41f4 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -354,6 +354,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) { @@ -370,6 +380,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