tcp: clear hints to avoid a stale one (nfs only affected?)
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Thu, 3 Dec 2009 06:24:02 +0000 (22:24 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Dec 2009 06:24:02 +0000 (22:24 -0800)
Eric Dumazet mentioned in a context of another problem:

"Well, it seems NFS reuses its socket, so maybe we miss some
cleaning as spotted in this old patch"

I've not check under which conditions that actually happens but
if true, we need to make sure we don't accidently leave stale
hints behind when the write queue had to be purged (whether reusing
with NFS can actually happen if purging took place is something I'm
not sure of).

...At least it compiles.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h

index 28b04ff8c9677edfcd088697e3788a1dbc8526e3..e2d2ca2509be29abbe81c531aeef0a7207fdc952 100644 (file)
@@ -1229,6 +1229,7 @@ static inline void tcp_write_queue_purge(struct sock *sk)
        while ((skb = __skb_dequeue(&sk->sk_write_queue)) != NULL)
                sk_wmem_free_skb(sk, skb);
        sk_mem_reclaim(sk);
+       tcp_clear_all_retrans_hints(tcp_sk(sk));
 }
 
 static inline struct sk_buff *tcp_write_queue_head(struct sock *sk)