From nobody Fri Jun 17 19:39:12 2022 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 4513085BD42; Fri, 17 Jun 2022 19:39:13 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LPq9Y0ntBz3Qwv; Fri, 17 Jun 2022 19:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494753; 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=A5CLx9XKJlgr+MLHcHp+ZFGhdaKUEFAwMECfbwn6QEI=; b=mXSljQduc2bsnf34gXcllbAiFA0gBCUwwAPb4Z9r2EmNRNjWCeo+JXjKnjZw6pjgSxQcia mO4KCpRCNp3uQvgwqYViGln82b0N1nVCFHGArj73P54Ieq/1ugqg/XGx68nqzzdT/5fIMp sZYglEwiaSoLkd7DJQ7ZJKeYHIeoOJ0/sM57nuwwpnaJqWpr3xMY5Ovv8Uc4psAd55BiPU BC+h7NZoR/RIhijyqmCKjf4e+WLayFDOpzSyYXtZ9wrE9HVqrAx8YUGZHAK4VOZ2f72n/T wPgK3K/Qhf3BXGlxLTT49Z1r+PZPNHxsj81RrFmPkpagtDwIpJksjTPUV9y8Yg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DD631257DE; Fri, 17 Jun 2022 19:39:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 25HJdCMl015709; Fri, 17 Jun 2022 19:39:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25HJdCNb015708; Fri, 17 Jun 2022 19:39:12 GMT (envelope-from git) Date: Fri, 17 Jun 2022 19:39:12 GMT Message-Id: <202206171939.25HJdCNb015708@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Chagin Subject: git: c5789e62ba30 - stable/13 - Add timespecvalid_interval macro and use it. 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: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dchagin X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c5789e62ba3085163c87cc75b0adcfb94efa9d74 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494753; 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=A5CLx9XKJlgr+MLHcHp+ZFGhdaKUEFAwMECfbwn6QEI=; b=MXQF05aHo3x6pcl2wwXojlqxdnjLNQfA+m3bPR5WxSvsKuV1/nhf/XLRvRlcYevXh6Z0nA NnoW0b+SLD8mOfY7xe/u9BaNoGZpioOyi+K1r46cXqgcvKK3xlHawE7xPrQBYtxWtLMgiQ 6BOVLIMAPvrTiSmtP7pttvC+Avyk/P3osuQNr+gG0bWxJzh6OaWOKmx3daxw5wdBtY/1lv w2whMJ/0eWcvCPUxOY/4A1gPV2HWdJxpJgASuSGN1HSl10/UTbAxpb3200mMQs04nLNgbH KM6hsSsHfOFqyrnhnN73KlgtmuNqRht5N/gTmhLNL8pDju+P+jdyIldAGK1evA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655494753; a=rsa-sha256; cv=none; b=kDmtUNc0YjJQegkUkj9IypiMLtywx7J4lmKxIT/4LQd+Wxzq7CPl2FPfhAwbXwFCiM319I P/e0wx9CX9d/lqv7dMby38qeO0BS5Cqi7gYehqsPMVaTROrbpZ1BC73q1m0F3EbI2li7W3 7ITIKlgjKpy0S0uD191t8AESwsGmm/8mXvfr7GgJBz8KE3UaJyumi3srXvDuXMOOmmaOHy 6GRSBvfQvtnhmLsADpkA36luGgVq8m6QNJsYTv2yIAC8KMRJlHUlAY/AaiFCqsRNyCjAHm 1qMLqLRQjV6ZmCWE4AOWVjx32/y73fAj98H4ByHiDMpit9Nct3yq0oDQJBevmA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=c5789e62ba3085163c87cc75b0adcfb94efa9d74 commit c5789e62ba3085163c87cc75b0adcfb94efa9d74 Author: Dmitry Chagin AuthorDate: 2022-04-25 07:20:54 +0000 Commit: Dmitry Chagin CommitDate: 2022-06-17 19:33:53 +0000 Add timespecvalid_interval macro and use it. Reviewed by: jhb, imp (early rev) Differential revision: https://reviews.freebsd.org/D34848 MFC after: 2 weeks (cherry picked from commit 91e7bdcdcf10684098e213e311cdafcd7a0ac983) --- sys/compat/linux/linux_time.c | 4 ++-- sys/kern/kern_event.c | 3 +-- sys/kern/kern_time.c | 4 ++-- sys/kern/kern_umtx.c | 21 ++++++--------------- sys/kern/sys_generic.c | 4 +--- sys/sys/time.h | 2 ++ 6 files changed, 14 insertions(+), 24 deletions(-) diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux/linux_time.c index f43e4d3985aa..739480342ad9 100644 --- a/sys/compat/linux/linux_time.c +++ b/sys/compat/linux/linux_time.c @@ -142,7 +142,7 @@ int linux_to_native_timespec(struct timespec *ntp, struct l_timespec *ltp) { - if (ltp->tv_sec < 0 || ltp->tv_nsec < 0 || ltp->tv_nsec > 999999999) + if (!timespecvalid_interval(ltp)) return (EINVAL); ntp->tv_sec = ltp->tv_sec; ntp->tv_nsec = ltp->tv_nsec; @@ -165,7 +165,7 @@ int linux_to_native_timespec64(struct timespec *ntp, struct l_timespec64 *ltp64) { - if (ltp64->tv_sec < 0 || ltp64->tv_nsec < 0 || ltp64->tv_nsec > 999999999) + if (!timespecvalid_interval(ltp64)) return (EINVAL); ntp->tv_sec = ltp64->tv_sec; ntp->tv_nsec = ltp64->tv_nsec; diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 832962d42a4d..90acafa8d66b 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -1922,8 +1922,7 @@ kqueue_scan(struct kqueue *kq, int maxevents, struct kevent_copyops *k_ops, rsbt = 0; if (tsp != NULL) { - if (tsp->tv_sec < 0 || tsp->tv_nsec < 0 || - tsp->tv_nsec >= 1000000000) { + if (!timespecvalid_interval(tsp)) { error = EINVAL; goto done_nl; } diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index b02b6a2021e0..18d89f54ca69 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -410,7 +410,7 @@ kern_clock_settime(struct thread *td, clockid_t clock_id, struct timespec *ats) return (error); if (clock_id != CLOCK_REALTIME) return (EINVAL); - if (ats->tv_nsec < 0 || ats->tv_nsec >= NS_PER_SEC || ats->tv_sec < 0) + if (!timespecvalid_interval(ats)) return (EINVAL); if (!allow_insane_settime && (ats->tv_sec > 8000ULL * 365 * 24 * 60 * 60 || @@ -1646,7 +1646,7 @@ static int itimespecfix(struct timespec *ts) { - if (ts->tv_sec < 0 || ts->tv_nsec < 0 || ts->tv_nsec >= NS_PER_SEC) + if (!timespecvalid_interval(ts)) return (EINVAL); if ((UINT64_MAX - ts->tv_nsec) / NS_PER_SEC < ts->tv_sec) return (EINVAL); diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c index 442f275b658c..c250d890bf05 100644 --- a/sys/kern/kern_umtx.c +++ b/sys/kern/kern_umtx.c @@ -3748,9 +3748,7 @@ umtx_copyin_timeout(const void *uaddr, struct timespec *tsp) error = copyin(uaddr, tsp, sizeof(*tsp)); if (error == 0) { - if (tsp->tv_sec < 0 || - tsp->tv_nsec >= 1000000000 || - tsp->tv_nsec < 0) + if (!timespecvalid_interval(tsp)) error = EINVAL; } return (error); @@ -3769,8 +3767,7 @@ umtx_copyin_umtx_time(const void *uaddr, size_t size, struct _umtx_time *tp) error = copyin(uaddr, tp, sizeof(*tp)); if (error != 0) return (error); - if (tp->_timeout.tv_sec < 0 || - tp->_timeout.tv_nsec >= 1000000000 || tp->_timeout.tv_nsec < 0) + if (!timespecvalid_interval(&tp->_timeout)) return (EINVAL); return (0); } @@ -4616,9 +4613,7 @@ umtx_copyin_timeouti386(const void *uaddr, struct timespec *tsp) error = copyin(uaddr, &ts32, sizeof(ts32)); if (error == 0) { - if (ts32.tv_sec < 0 || - ts32.tv_nsec >= 1000000000 || - ts32.tv_nsec < 0) + if (!timespecvalid_interval(&ts32)) error = EINVAL; else { CP(ts32, *tsp, tv_sec); @@ -4642,8 +4637,7 @@ umtx_copyin_umtx_timei386(const void *uaddr, size_t size, struct _umtx_time *tp) error = copyin(uaddr, &t32, sizeof(t32)); if (error != 0) return (error); - if (t32._timeout.tv_sec < 0 || - t32._timeout.tv_nsec >= 1000000000 || t32._timeout.tv_nsec < 0) + if (!timespecvalid_interval(&t32._timeout)) return (EINVAL); TS_CP(t32, *tp, _timeout); CP(t32, *tp, _flags); @@ -4680,9 +4674,7 @@ umtx_copyin_timeoutx32(const void *uaddr, struct timespec *tsp) error = copyin(uaddr, &ts32, sizeof(ts32)); if (error == 0) { - if (ts32.tv_sec < 0 || - ts32.tv_nsec >= 1000000000 || - ts32.tv_nsec < 0) + if (!timespecvalid_interval(&ts32)) error = EINVAL; else { CP(ts32, *tsp, tv_sec); @@ -4706,8 +4698,7 @@ umtx_copyin_umtx_timex32(const void *uaddr, size_t size, struct _umtx_time *tp) error = copyin(uaddr, &t32, sizeof(t32)); if (error != 0) return (error); - if (t32._timeout.tv_sec < 0 || - t32._timeout.tv_nsec >= 1000000000 || t32._timeout.tv_nsec < 0) + if (!timespecvalid_interval(&t32._timeout)) return (EINVAL); TS_CP(t32, *tp, _timeout); CP(t32, *tp, _flags); diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 541c9f910df1..17bccbaca691 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -1431,9 +1431,7 @@ kern_poll_kfds(struct thread *td, struct pollfd *kfds, u_int nfds, precision = 0; if (tsp != NULL) { - if (tsp->tv_sec < 0) - return (EINVAL); - if (tsp->tv_nsec < 0 || tsp->tv_nsec >= 1000000000) + if (!timespecvalid_interval(tsp)) return (EINVAL); if (tsp->tv_sec == 0 && tsp->tv_nsec == 0) sbt = 0; diff --git a/sys/sys/time.h b/sys/sys/time.h index dae42c18d10a..ce4c7c1b555e 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -410,6 +410,8 @@ tvtosbt(struct timeval _tv) (vsp)->tv_nsec += 1000000000L; \ } \ } while (0) +#define timespecvalid_interval(tsp) ((tsp)->tv_sec >= 0 && \ + (tsp)->tv_nsec >= 0 && (tsp)->tv_nsec < 1000000000L) #ifdef _KERNEL