TCP stack relies on the fact that a freshly allocated skb
has skb->cb[] and skb_shinfo(skb)->tx_flags cleared.

When recycling tx skb, we must ensure these fields are cleared.

Fixes: 472c2e07eef0 ("tcp: add one skb cache for tx")
Signed-off-by: Eric Dumazet <eduma...@google.com>
Cc: Soheil Hassas Yeganeh <soh...@google.com>
Cc: Willem de Bruijn <will...@google.com>
---
 net/ipv4/tcp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 
82bd707c03472f2cebb1a90d5f1c13acc821468f..603e770d59b3db96adca9602319d2f6970a56285
 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -872,6 +872,8 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int 
size, gfp_t gfp,
                        sk->sk_tx_skb_cache = NULL;
                        pskb_trim(skb, 0);
                        INIT_LIST_HEAD(&skb->tcp_tsorted_anchor);
+                       skb_shinfo(skb)->tx_flags = 0;
+                       memset(TCP_SKB_CB(skb), 0, sizeof(struct tcp_skb_cb));
                        return skb;
                }
        }
-- 
2.21.0.392.gf8f6787159e-goog

Reply via email to