tcp_bic: fix divide by zero on max_increment == 0

max_increment is how many packets cwnd can grow per RTT, so 0 makes
no sense, and bictcp_update() divides by it.

Reject values below 1 when the parameter is written.

Fixes: 83803034f4 ("[TCP]: Add TCP BIC congestion control module.")
Reported-by: VEGA <vega@nebusec.ai>
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Reviewed-by: Eric Dumazet <edumazet@kernel.org>
Link: https://patch.msgid.link/20261008092641.140777-2-jiayuan.chen@linux.dev
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Jiayuan Chen 2026-10-08 17:26:34 +08:00 committed by Paolo Abeni
parent d780425367
commit 8edbf6c233

View File

@ -27,15 +27,25 @@
*/
static int fast_convergence = 1;
static int max_increment = 16;
static unsigned int max_increment = 16;
static int low_window = 14;
static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */
static int initial_ssthresh;
static int smooth_part = 20;
static int max_increment_set(const char *val, const struct kernel_param *kp)
{
return param_set_uint_minmax(val, kp, 1, INT_MAX);
}
static const struct kernel_param_ops max_increment_ops = {
.set = max_increment_set,
.get = param_get_uint,
};
module_param(fast_convergence, int, 0644);
MODULE_PARM_DESC(fast_convergence, "turn on/off fast convergence");
module_param(max_increment, int, 0644);
module_param_cb(max_increment, &max_increment_ops, &max_increment, 0644);
MODULE_PARM_DESC(max_increment, "Limit on increment allowed during binary search");
module_param(low_window, int, 0644);
MODULE_PARM_DESC(low_window, "lower bound on congestion window (for TCP friendliness)");