mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
tcp_hybla: fix divide by zero on rtt0 == 0
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:835b3f0c0d("[TCP]: Add TCP Hybla congestion control module.") Fixes:740b0f1841("tcp: switch rtt estimations to usec resolution") 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-3-jiayuan.chen@linux.dev Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
8edbf6c233
commit
f09eb97322
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user