From nobody Sun Nov 01 22:08:43 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 4jHprX2r4Zz6y2w5 for ; Sun, 01 Nov 2026 22:08:44 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jHprW4RQLz4jrB for ; Sun, 01 Nov 2026 22:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793570923; 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=i6GnZL2/DFEk/Bmdk6r+V0mt++erVplD5Hwon53amGM=; b=HBuLyBE2ILG51l4I6UmCl0mzdDwCR3wXn+Lvk4pbCoC88Ywd04Kl0K/u0YxUTMtF6HwO0I HcGxxvjNjF1qmdNiyofceE3UBTpRy2BpVghVvnZWH07wv7Jo7mysNEdEXy25xlwYeV6hju iruWYBick6ZIAjh+Vkc0ZAY6YvI9JqQDAgC3um/v8He1Xsh87yAyF359myuzNonoek1OZo rfFJ+PTcFZJurZRlZLC8nLgMzxLo7unjCE3XZCKX6la89nKPhlmCbFRoZiV2FLcu3doOCj IeIY5gQ+gWJxEJglg43erb9v9+LJYJuIhMxA0U8DG6hMvTnJSxbSmqkVIdsrAw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793570923; b=ma3d4hLUynz+d0LglUh+85DB8at1upkUfOI35wGuSs3RjSnyzP7TJTO8dPXKL/dajYHiMp kmDBLZ4AHBzdYC8LXpIKMVXgn945utNT/B8WpcZjdu/h1Jy03AC2y+rOGwR90deuAEJInR X8Y32zMFfJ6TNHo7ABjFRGj3xNNj5DRqItbZIGqRBYQUdjZlyZzn48da3fBLTTjnTZd1CX PIXzPHAL5KWJBdBvSPmcXJG/TUScJ51K+wy1abZJsAReC1tVKZFoNM9SpzNp/8YzhAk8+B j997L5HgWD4WoQu4ekZZlWMeWxrgE1OcGW6cIoePC3nQzdjYeA8MrKwyXf1wpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793570923; 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=i6GnZL2/DFEk/Bmdk6r+V0mt++erVplD5Hwon53amGM=; b=C3xnF8gcPyl3J8cDPRLJY441Lw17vuHoP3dCR9SHDj7qSEnBtX05WbEMmzZ2dFgCJ+fLVy uQz2WSEWJ+YiQtPeYfFb7/UrzhLwcO1/S+GENcW/jhBc/o0Gmfgw9gNcMk98qy9vYjB3jM 9jR2A73kWgVqCuB1e92zJXML+a0tjKVEEIU4eJ/QqDccqJcO9GR9lLNduYkAdQSLxxlDHa wRujbpEWxrYM5ZBCAhV0izDkEHvMwtatF6c42ncca/Q8ZgBz3mCt5Dxk+nPWZTxBAX/9Ue 4qltbqND3bY7Hn5gwiE1yMiYpu++oFSCP1QNfAXhGtkBaDAxIkvNK8/ikddbKQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jHprW45ggzGtF for ; Sun, 01 Nov 2026 22:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 417b0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Nov 2026 22:08:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 8b3f74c15296 - stable/15 - libthr: Fix LIBPTHREAD_QUEUE_FIFO range List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8b3f74c152968ec7b8b57a96bbe3b2091b2b817a Auto-Submitted: auto-generated Date: Sun, 01 Nov 2026 22:08:43 +0000 Message-Id: <6ae7b86b.417b0.59d9b6d3@gitrepo.freebsd.org> The branch stable/15 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=8b3f74c152968ec7b8b57a96bbe3b2091b2b817a commit 8b3f74c152968ec7b8b57a96bbe3b2091b2b817a Author: ShengYi Hung AuthorDate: 2026-10-08 18:53:06 +0000 Commit: ShengYi Hung CommitDate: 2026-11-01 22:08:26 +0000 libthr: Fix LIBPTHREAD_QUEUE_FIFO range LIBPTHREAD_QUEUE_FIFO is used in bitwise offset, we set the limit to 0~31 so that it won't cause undefined behavior. Also, create a new helper function to do getenv++strtol directly and check the boundary of the valid value. Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D60487 (cherry picked from commit 5fb07bbcd5d5d9a865d9e7765fb93e9ba5edef1c) --- lib/libthr/libthr.3 | 4 ++-- lib/libthr/thread/thr_init.c | 33 ++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/lib/libthr/libthr.3 b/lib/libthr/libthr.3 index 4b1995a79414..afd2556c274e 100644 --- a/lib/libthr/libthr.3 +++ b/lib/libthr/libthr.3 @@ -27,7 +27,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd October 1, 2021 +.Dd October 8, 2026 .Dt LIBTHR 3 .Os .Sh NAME @@ -199,7 +199,7 @@ The value is the count of loop operations. The integer value of the variable specifies how often blocked threads are inserted at the head of the sleep queue, instead of its tail. Bigger values reduce the frequency of the FIFO discipline. -The value must be between 0 and 255. +The value must be between 0 and 31. .It Dv LIBPTHREAD_UMTX_MIN_TIMEOUT The minimal amount of time, in nanoseconds, the thread is required to sleep for pthread operations specifying a timeout. diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c index 162ef7dfe7a9..fca09affa53e 100644 --- a/lib/libthr/thread/thr_init.c +++ b/lib/libthr/thread/thr_init.c @@ -475,6 +475,24 @@ __thr_get_main_stack_lim(size_t *lim) return (false); } +static bool +getenv_int(const char *name, int mn, int mx, int *result) +{ + const char *env; + char *endptr; + long val; + + env = getenv(name); + if (env == NULL || *env == '\0') + return (false); + val = strtol(env, &endptr, 10); + if (*endptr != '\0' || errno != 0 || val < mn || val > mx) { + return (false); + } + *result = val; + return (true); +} + static void init_private(void) { @@ -519,15 +537,12 @@ init_private(void) _thr_guard_default = _thr_page_size; _pthread_attr_default.guardsize_attr = _thr_guard_default; _pthread_attr_default.stacksize_attr = _thr_stack_default; - env = getenv("LIBPTHREAD_SPINLOOPS"); - if (env) - _thr_spinloops = atoi(env); - env = getenv("LIBPTHREAD_YIELDLOOPS"); - if (env) - _thr_yieldloops = atoi(env); - env = getenv("LIBPTHREAD_QUEUE_FIFO"); - if (env) - _thr_queuefifo = atoi(env); + (void)getenv_int("LIBPTHREAD_SPINLOOPS", 0, INT_MAX, + &_thr_spinloops); + (void)getenv_int("LIBPTHREAD_YIELDLOOPS", 0, INT_MAX, + &_thr_yieldloops); + (void)getenv_int("LIBPTHREAD_QUEUE_FIFO", 0, 31, + &_thr_queuefifo); env = getenv("LIBPTHREAD_UMTX_MIN_TIMEOUT"); if (env) { char *endptr;