From nobody Tue Oct 13 19:27:57 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 4j449v17Lnz6w2h8 for ; Tue, 13 Oct 2026 19:28:03 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j449v0DC9z3Qxw for ; Tue, 13 Oct 2026 19:28:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791919683; 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=3zwZ9iO7YY3ocyTSF+yfV9dXfVxjXRUV7PO4foHlYJo=; b=sNUMdtM+udr/+kXrrKlczL7kOGyuDYKlQ88H72Z/8C1tw8aJ25EqFnC1GQEQSB5v2C35oA TetLoM6FEOQDYJZiOC/a2GG6QR8bV9kjz9VM2xC6FySWGMWOrJcCaGlF0FJhfJi03/SuVw 7Q+jV5Mr4vXuusIM0rhR5qZjKmYCdV2KQMwXY9uVdWpMsHxXYa7zv8w4NcDWigkysEnB6v aN3yJLUaMwjA4ajuucn7NjvS5TKzGHOSyMQa5yAHwEg3idTDeOMl0ZhczrYo6weKVAkxhm 8fBkTooZK0jFAOOLCfQbAcOdpOj6VEsvuCSdJTZSkelyNk/LMivbFwSK+5QMtg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791919683; b=k839aQgIhenV95qnxA4gUz1h5qsbLgp3sVWDJck0Wtt7nKswhy5pjysm6P2osbiS9GOYA7 hk844Sn0p/z5JYKS1o6hX+qJn3iYjDeyrFdk2bRknlGs8tYRCVd49Q2uI1VDjpAVH+pIAy H+dx+UwBYStn+Xqq/rcjnY2TWxI8mV4TLS/DXr93t2rX3Oi4+/r7ZgRwZSerc2AhBGhbru wiqbAp5e3EBxt1FT0qzCsxi4Fx6MxJOdLIQqS1SVML7F4tW+OFFWMpXOg405FvMQTjWtLE Vu9kR0kmM+m42fVlX4d+FF8ueVbZf3SpuTbbvEUlB8bROJmNkePFBYdTzFClBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791919683; 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=3zwZ9iO7YY3ocyTSF+yfV9dXfVxjXRUV7PO4foHlYJo=; b=jjiveR0hRAVp/dxgbr9kV15RROM42J9VoNCjaBbds1iNnBQiYVwjSnsnE1otqtO6hdzAcF 7kBEZOihA8OKvC5TNf7ZPYimKJlM4TwLAyVIYIrbSpLuvB8TOWhrH4MKR1lLQ5t9nub9wY LNc9BrP0Xn1RhFqiIGS9OgZvzjTOi8ritNKKMT462Oo3T6kJ5HsqafPhYqX99E+oI7/hJG flZnwrsjLuzTT+FLQZyxqEHX/67UpmqeVCuo4PR+JU2cRiVGZ6g7PrJ3G2JXx/5yf+tJFm lYzC92yXYa+Em8SK6UixLFz6+Ym+S5hAHKOQanI0Ira0f7hRE9x8uQBxiPIpgA== 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 4j449t5XBmzSJq for ; Tue, 13 Oct 2026 19:28:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4249b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 13 Oct 2026 19:27:57 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 5fb07bbcd5d5 - main - 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/main X-Git-Reftype: branch X-Git-Commit: 5fb07bbcd5d5d9a865d9e7765fb93e9ba5edef1c Auto-Submitted: auto-generated Date: Tue, 13 Oct 2026 19:27:57 +0000 Message-Id: <6ace863d.4249b.3e920ac5@gitrepo.freebsd.org> The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=5fb07bbcd5d5d9a865d9e7765fb93e9ba5edef1c commit 5fb07bbcd5d5d9a865d9e7765fb93e9ba5edef1c Author: ShengYi Hung AuthorDate: 2026-10-08 18:53:06 +0000 Commit: ShengYi Hung CommitDate: 2026-10-13 19:27:46 +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 --- 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 c019c8f27b36..e2e883c2bd04 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;