From nobody Fri Apr 3 15:26:15 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 4fnMy01Bhlz6YgQh for ; Fri, 03 Apr 2026 15:26: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 4fnMxz626dz3f2W for ; Fri, 03 Apr 2026 15:26:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229975; 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=cmNHJNrxmSbeC3Jg0AYM17lYRBbbRsIkelarT0Wgqa4=; b=LUZZ+meAkU+4xyw5i37YPU6nROJb+e46no40KCEbJJQ/2aqvD6mQlz2LM02G/nW6GOlb/T pRgC3S2FhyUNPhjbCjXKbWCGCgniUzhGTomqDHifnWO4LVGiZh9aqyZqJakreIY6S+N4HQ WwlsTMBDeCnnHZHSt2XgtkZj8e04eYTHveE5xbxcY5lO4gI0WajP2YTYzXIXt0+HrRW4Df MNNwbqjLuh0M6lO7r+i1nbs9b+qOMgLtnoRJJVzey0Wzc7+NVbMfgL8WoHxw2In0qoXi1+ iEuuY2dfEqAHVJLC6rav9hTCm+GQES904+ryZqyoTTXCQxpfbqwCSHCaQh7Lfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229975; a=rsa-sha256; cv=none; b=CaCWlRljCNZNd4NAW0TVcrJG9sjc9ugpKxoDVkAJhGVFtJAgQYttl0VONFqf8liXNJNEML UL6LeW2oYHhwk3nF5vFT0YuV8YHYmKdABsD0ar8/ojRfE6ByG32HQB4Fi+u7l0CeZLdF8T IGJW+CYwgvct5cE+nMY9JldBpU/R88Q99OIWZ5FjEhRqXeIPSwVbxtgsR/FUEkWzu6edMv z6IZ2VRnoe3X7n14sW0eCHsFAT0+gyzfYglpAc3p3zQ6RVFNOmAfUSvkWISERjYmCh39tF AhaVdwi3GGhRx+63ZFumghnIYHaIJCkDZkNwv3oUDV2NcAObZZF/qBGqzdPWEg== 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=1775229975; 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=cmNHJNrxmSbeC3Jg0AYM17lYRBbbRsIkelarT0Wgqa4=; b=msK+xavZ+CXODInefJ7phw7xHRoAv+o8JyR449FXo+oZBvdwvHiil8AYauPXPlWpxZfDI3 hSnwLuPxCPdMT8moEaDZ8TFUfQRBE3M4HSHRYFIT48coKcnXZGu8fBFhoOhAryOKr8i3pf hLfGkqCjyit/CAqnovp8vhajyDlQJnI0LR16PeLWzI7l4LF9a3MmhojvGh6Q8qD0LNoZMy 5oaWvNscssyunbHdJ93JSplDCLucmTG/OEmb3TmKxNDCvfHwmIAZ5o32u/IdV6DVMPxiNs YpTLNZzw6JOlm9s2y1SoBdiYxw7FjAuJZ7CwrHM+Gm7M9RVlNE/oC88lLklV0g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMxz5RKgzvKJ for ; Fri, 03 Apr 2026 15:26:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3fa44 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 7f087ed787c6 - stable/15 - 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/15 X-Git-Reftype: branch X-Git-Commit: 7f087ed787c6e3579ec4a53d174d503653f6fa93 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:15 +0000 Message-Id: <69cfdc17.3fa44.7a3ce089@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=7f087ed787c6e3579ec4a53d174d503653f6fa93 commit 7f087ed787c6e3579ec4a53d174d503653f6fa93 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:20 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +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 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