From nobody Sat Oct 17 18:21:31 2026 X-Original-To: dev-commits-src-main@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 4j6VWH6tfwz6wYnS for ; Sat, 17 Oct 2026 18:21:31 +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 4j6VWH5xQsz4gQT for ; Sat, 17 Oct 2026 18:21:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792261291; 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=5Mg48HRWTiq/BQNIP+mQoaLt/UG37krvKOBJxYagDco=; b=QgDDtDviayUC6EzBLmi1AGjIoLQnyeKgEmZuhi1K4/1vi/m9rZfu9/3LHCkjZlAJzSavTS VkMivy5GA10TEeFHmFf1wI80hKzvEjeJTjo3jMbJJt3BbGkoP+GDuVVslYCuzV+Z3gLg17 f0pxpS3krYBQ9puw85iQ9hDL6+2IGKEhkBjy6Av+8gGAOXowDa13NGZbIVD90UR8KcWno8 6bGXg1ulaZcD9JfzOmuR5VUdg71XIvvBDPmqGKMGLrJUTXu3seCHeug0P41NMdZwfzB2eF 2d/WghL/rTV09Bd0iqOu1vJFgiJM33dZz0nqP7M1HN1Mdvu9gV+iDug9mTFn4Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792261291; b=sWzmpaNIl/hrQ0nhMi+vbg4+hhl2Vc2bLO80gTWeJfw+yKkN6m3Hq77SH0we9G4xzLtvcG mzUazLNr3jWdrNbJ01a7P3DQAHrZ7zGXNSMtIFvqb7aTHkVhWu00VPTO8Xf+kCS48SdLrC 98wUNi4Y7wEeA78Z0GaHxo5iv5em013V04As/Pg8q6scOgihlMusl03TuqyCeXWDW7Te6b ib9c5MNR3ZkwLahoajVmW6ZTuH2C9QCcW9XpzES4i0qCMqExzLtQWggL22OQMM13088pYO NBi2TlABJ49YxaxWeJajrR61dgq1xAqFENA+HFWChycQj9vPJhdB9UdKdJBECg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792261291; 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=5Mg48HRWTiq/BQNIP+mQoaLt/UG37krvKOBJxYagDco=; b=IZc4dgNoUKtU9QD5T5toEC2p3AnxxUYh+AU1+6xrhNODVbtamz0ouYAVyrk3+pFJ0+Xom8 NJU1k9db8cdOFaVHKFGcuDT3pLG79haPrfrhpQRPVu0CvH+nRmVBl+Io6pBXXxtuLJ8PWL wdLCGCaMSxUDmBvUMqVQv6eHDKuAVANnqVvi9EFnIrRRfs1wCGzDJU3Ivuf0yUxQGy7OQd Am6gXyMPkRe3njWNriHlDyWwlHdjV+Ig3/UiISvubACINkpHUOj6pNTBq6u0hk8y+30BTC RMvPcVNpoaoTQw+qwxarWIfnV0siSwDfSqSiujiFUd+xOoimo1STVcCTYnv0cQ== 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 4j6VWH5bmQzDhm for ; Sat, 17 Oct 2026 18:21:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 240a0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 17 Oct 2026 18:21:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Maxim Konovalov Subject: git: 7668705cb983 - main - tcp/rack: reject wma_divisor values <= 0 List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch 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: maxim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7668705cb9837d4c3a6db9b3434b3a522220c8ea Auto-Submitted: auto-generated Date: Sat, 17 Oct 2026 18:21:31 +0000 Message-Id: <6ad3bcab.240a0.37815ca6@gitrepo.freebsd.org> The branch main has been updated by maxim: URL: https://cgit.FreeBSD.org/src/commit/?id=7668705cb9837d4c3a6db9b3434b3a522220c8ea commit 7668705cb9837d4c3a6db9b3434b3a522220c8ea Author: Maxim Konovalov AuthorDate: 2026-10-16 22:15:00 +0000 Commit: Maxim Konovalov CommitDate: 2026-10-17 18:19:45 +0000 tcp/rack: reject wma_divisor values <= 0 The net.inet.tcp.rack.measure.wma_divisor sysctl is the divisor of the goodput weighted moving average used when the dynamic goodput multiplier is enabled. Setting it to 0 panics the kernel. Make the variable and the sysctl unsigned, reject 0 and values above INT32_MAX. MFC after: 1 month Found with: Claude Code Opus 5.5 Reviewed by: tuexen, glebius, markj (early version) Differential Revision: https://reviews.freebsd.org/D60759 --- sys/netinet/tcp_stacks/rack.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index fcbe4834b5e4..c1f89a6286b4 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -275,7 +275,7 @@ static int32_t rack_rate_sample_method = USE_RTT_LOW; static int32_t rack_pace_every_seg = 0; static int32_t rack_delayed_ack_time = 40000; /* 40ms in usecs */ static int32_t rack_pacing_delay_reduction = 4; -static int32_t rack_wma_divisor = 8; /* For WMA calculation */ +static uint32_t rack_wma_divisor = 8; /* For WMA calculation */ static int32_t rack_cwnd_block_ends_measure = 0; static int32_t rack_rwnd_block_ends_measure = 0; static int32_t rack_def_profile = 0; @@ -840,6 +840,22 @@ sysctl_rack_clear(SYSCTL_HANDLER_ARGS) return (0); } +static int +sysctl_rack_wma_divisor(SYSCTL_HANDLER_ARGS) +{ + uint32_t val; + int error; + + val = *(uint32_t *)arg1; + error = sysctl_handle_32(oidp, &val, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + if (val == 0 || val > INT32_MAX) + return (EINVAL); + *(uint32_t *)arg1 = val; + return (0); +} + static void rack_init_sysctls(void) { @@ -1407,11 +1423,11 @@ rack_init_sysctls(void) "measure", CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "Measure related controls"); - SYSCTL_ADD_S32(&rack_sysctl_ctx, + SYSCTL_ADD_PROC(&rack_sysctl_ctx, SYSCTL_CHILDREN(rack_measure), - OID_AUTO, "wma_divisor", CTLFLAG_RW, - &rack_wma_divisor, 8, - "When doing b/w calculation what is the divisor for the WMA"); + OID_AUTO, "wma_divisor", CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, + &rack_wma_divisor, 0, sysctl_rack_wma_divisor, "IU", + "When doing b/w calculation what is the divisor for the WMA"); SYSCTL_ADD_S32(&rack_sysctl_ctx, SYSCTL_CHILDREN(rack_measure), OID_AUTO, "end_cwnd", CTLFLAG_RW,