]> git.hungrycats.org Git - linux/commitdiff
[TCP]: IPV6, do not use sock_put() on timewait sockets.
authorNivedita Singhvi <niv@us.ibm.com>
Wed, 31 Mar 2004 15:13:46 +0000 (07:13 -0800)
committerStephen Hemminger <shemminger@osdl.org>
Wed, 31 Mar 2004 15:13:46 +0000 (07:13 -0800)
net/ipv6/tcp_ipv6.c

index 11f4517468fa3018d01dbd3eab702c17dbec4c09..00d91e32024502e7f3c8a778b9283966ccfcf184 100644 (file)
@@ -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;
        }