tcp_nv: fix potential integer overflow in tcpnv_acked
[ Upstream commit e4823fbd22
]
Add suffix ULL to constant 80000 in order to avoid a potential integer
overflow and give the compiler complete information about the proper
arithmetic to use. Notice that this constant is used in a context that
expects an expression of type u64.
The current cast to u64 effectively applies to the whole expression
as an argument of type u64 to be passed to div64_u64, but it does
not prevent it from being evaluated using 32-bit arithmetic instead
of 64-bit arithmetic.
Also, once the expression is properly evaluated using 64-bit arithmentic,
there is no need for the parentheses and the external cast to u64.
Addresses-Coverity-ID: 1357588 ("Unintentional integer overflow")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pull/10/head
parent
ad10785a70
commit
a6a25002e6
|
@ -327,7 +327,7 @@ static void tcpnv_acked(struct sock *sk, const struct ack_sample *sample)
|
|||
*/
|
||||
cwnd_by_slope = (u32)
|
||||
div64_u64(((u64)ca->nv_rtt_max_rate) * ca->nv_min_rtt,
|
||||
(u64)(80000 * tp->mss_cache));
|
||||
80000ULL * tp->mss_cache);
|
||||
max_win = cwnd_by_slope + nv_pad;
|
||||
|
||||
/* If cwnd > max_win, decrease cwnd
|
||||
|
|
Loading…
Reference in New Issue