mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-30 19:07:15 +00:00
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
1 changed files with 4 additions and 1 deletions
|
@ -663,10 +663,13 @@ void tcp_fastopen_cache_get(struct sock *sk, u16 *mss,
|
||||||
void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
|
void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
|
||||||
struct tcp_fastopen_cookie *cookie, bool syn_lost)
|
struct tcp_fastopen_cookie *cookie, bool syn_lost)
|
||||||
{
|
{
|
||||||
|
struct dst_entry *dst = __sk_dst_get(sk);
|
||||||
struct tcp_metrics_block *tm;
|
struct tcp_metrics_block *tm;
|
||||||
|
|
||||||
|
if (!dst)
|
||||||
|
return;
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
tm = tcp_get_metrics(sk, __sk_dst_get(sk), true);
|
tm = tcp_get_metrics(sk, dst, true);
|
||||||
if (tm) {
|
if (tm) {
|
||||||
struct tcp_fastopen_metrics *tfom = &tm->tcpm_fastopen;
|
struct tcp_fastopen_metrics *tfom = &tm->tcpm_fastopen;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue