net-tcp: fix panic in tcp_fastopen_cache_set()
We had some reports of crashes using TCP fastopen, and Dave Jones
gave a nice stack trace pointing to the error.
Issue is that tcp_get_metrics() should not be called with a NULL dst
Fixes: 1fe4c481ba
("net-tcp: Fast Open client - cookie cache")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Dave Jones <davej@redhat.com>
Cc: Yuchung Cheng <ycheng@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Tested-by: Dave Jones <davej@fedoraproject.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b869ccfab1
commit
dccf76ca6b
|
@ -663,10 +663,13 @@ void tcp_fastopen_cache_get(struct sock *sk, u16 *mss,
|
|||
void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
|
||||
struct tcp_fastopen_cookie *cookie, bool syn_lost)
|
||||
{
|
||||
struct dst_entry *dst = __sk_dst_get(sk);
|
||||
struct tcp_metrics_block *tm;
|
||||
|
||||
if (!dst)
|
||||
return;
|
||||
rcu_read_lock();
|
||||
tm = tcp_get_metrics(sk, __sk_dst_get(sk), true);
|
||||
tm = tcp_get_metrics(sk, dst, true);
|
||||
if (tm) {
|
||||
struct tcp_fastopen_metrics *tfom = &tm->tcpm_fastopen;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user