mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
tcp: tcp_v4_err() should be more careful
[ Upstream commit 2c4cc97123 ]
ICMP handlers are not very often stressed, we should
make them more resilient to bugs that might surface in
the future.
If there is no packet in retransmit queue, we should
avoid a NULL deref.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: soukjin bae <soukjin.bae@samsung.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8565b7fb8d
commit
55103aa317
@@ -475,14 +475,15 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
|
||||
if (sock_owned_by_user(sk))
|
||||
break;
|
||||
|
||||
skb = tcp_write_queue_head(sk);
|
||||
if (WARN_ON_ONCE(!skb))
|
||||
break;
|
||||
|
||||
icsk->icsk_backoff--;
|
||||
icsk->icsk_rto = tp->srtt_us ? __tcp_set_rto(tp) :
|
||||
TCP_TIMEOUT_INIT;
|
||||
icsk->icsk_rto = inet_csk_rto_backoff(icsk, TCP_RTO_MAX);
|
||||
|
||||
skb = tcp_write_queue_head(sk);
|
||||
BUG_ON(!skb);
|
||||
|
||||
tcp_mstamp_refresh(tp);
|
||||
delta_us = (u32)(tp->tcp_mstamp - skb->skb_mstamp);
|
||||
remaining = icsk->icsk_rto -
|
||||
|
||||
Reference in New Issue
Block a user