From: Nivedita Singhvi Date: Wed, 31 Mar 2004 15:13:46 +0000 (-0800) Subject: [TCP]: IPV6, do not use sock_put() on timewait sockets. X-Git-Tag: v2.6.5~38^2^2 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=3a57ff0cdb8cb0c34a69a7cc65e91dc0f35b4fb8;p=history.git [TCP]: IPV6, do not use sock_put() on timewait sockets. --- diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 11f4517468fa..00d91e320245 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1639,7 +1639,7 @@ process: no_tcp_socket: if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) - goto discard_and_relse; + goto discard_it; if (skb->len < (th->doff<<2) || tcp_checksum_complete(skb)) { bad_packet: @@ -1662,12 +1662,14 @@ discard_and_relse: goto discard_it; do_time_wait: - if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) - goto discard_and_relse; + if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) { + tcp_tw_put((struct tcp_tw_bucket *) sk); + goto discard_it; + } if (skb->len < (th->doff<<2) || tcp_checksum_complete(skb)) { TCP_INC_STATS_BH(TcpInErrs); - sock_put(sk); + tcp_tw_put((struct tcp_tw_bucket *) sk); goto discard_it; }