From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mta0.migadu.com (out-34.mta0.migadu.com [91.218.175.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E27E7496D31 for ; Thu, 1 Oct 2026 11:30:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.34 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790854229; cv=none; b=U6XWmuYZYjcupTy0klvuPv+3cIZY7P4huYZBMYI/tUlWJEn3TERAuamr0jmTzkh/3RzyIvaM5n+EjJjuvEW+2Ta+yz5omTemXgIgpKic6u/nVO5cnq3pQOgkVhWU2Wy7SU2lYdGl5bgmU70wIm8N5lzVL2Y9Q7bbnp1GFcByOOw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790854229; c=relaxed/simple; bh=vO28RuHvb/kz865ezZgkGAYOatRDbrmagz1HCj0FRXk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g+eCLBjkbNxu+wRd/hWGjifBKI3QXODVCmHqmnAogB7CHB+a2GyBi8OMtnoexFi1VxDdfbAe5w4ZR++lMYEKQ318iPNqC/Nv01eLjlUr2nzvBYOB7kWrYfBj4Eo3JWPUklsOP4iuoPUgimpkDjAO69i8sG5SOehM9QrUwCgqT8o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=HSBHh7uW; arc=none smtp.client-ip=91.218.175.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="HSBHh7uW" X-Envelope-To: netdev@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=vO28RuHvb/kz865ezZgkGAYOatRDbrmagz1HCj0FRXk=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1790854222; v=1; x=1791459022; b=HSBHh7uWiiuv6URoUPgvwF2n3PeTgpXEw176cn2VH0+uIC5VhqMTDFK1ASLJr11RjmtSpuMo JndA3q0Uun7ENQHgaXYs0XfX9ciY0tukSpgG4vt0xyzMRO8zjDn62qa7KIJKnK0KtUZ1eJ0HX0C 09NfJKuO3X4JJGqHRF8EccFc= X-Envelope-To: netdev@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 9361699c314069ea; Thu, 01 Oct 2026 11:30:21 +0000 X-Mizu-Trace-ID: 9361699c314069ea X-Migadu-Flow: FLOW_OUT From: Jiayuan Chen To: netdev@vger.kernel.org Cc: Jiayuan Chen , VEGA , Eric Dumazet , Eric Dumazet , Neal Cardwell , Kuniyuki Iwashima , "David S. Miller" , Jakub Kicinski , Paolo Abeni , Simon Horman , Stephen Hemminger , linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 2/3] tcp_hybla: fix divide by zero on rtt0 == 0 Date: Thu, 1 Oct 2026 19:29:42 +0800 Message-ID: <20261001112948.322463-3-jiayuan.chen@linux.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261001112948.322463-1-jiayuan.chen@linux.dev> References: <20261001112948.322463-1-jiayuan.chen@linux.dev> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit rtt0 is the reference RTT in ms, so 0 makes no sense, and hybla_recalc_param() divides by it right from hybla_init(). Reject values below 1 when the parameter is written. Also cap it at U32_MAX / USEC_PER_MSEC, since rtt0 * USEC_PER_MSEC can wrap to 0 on 32-bit. An rtt0 above that (about 71 minutes) makes no sense anyway. Fixes: 835b3f0c0d7e ("[TCP]: Add TCP Hybla congestion control module.") Fixes: 740b0f1841f6 ("tcp: switch rtt estimations to usec resolution") Reported-by: VEGA Signed-off-by: Jiayuan Chen Reviewed-by: Eric Dumazet --- Target net-next since it is not a big problem. --- net/ipv4/tcp_hybla.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/net/ipv4/tcp_hybla.c b/net/ipv4/tcp_hybla.c index abd7d91807e54..b9b482180d30b 100644 --- a/net/ipv4/tcp_hybla.c +++ b/net/ipv4/tcp_hybla.c @@ -26,8 +26,20 @@ struct hybla { }; /* Hybla reference round trip time (default= 1/40 sec = 25 ms), in ms */ -static int rtt0 = 25; -module_param(rtt0, int, 0644); +static unsigned int rtt0 = 25; + +static int rtt0_set(const char *val, const struct kernel_param *kp) +{ + /* avoid rtt0 * USEC_PER_MSEC overflow */ + return param_set_uint_minmax(val, kp, 1, U32_MAX / USEC_PER_MSEC); +} + +static const struct kernel_param_ops rtt0_ops = { + .set = rtt0_set, + .get = param_get_uint, +}; + +module_param_cb(rtt0, &rtt0_ops, &rtt0, 0644); MODULE_PARM_DESC(rtt0, "reference rout trip time (ms)"); /* This is called to refresh values for hybla parameters */ -- 2.43.0