net: do not call sock_put() on TIMEWAIT sockets
authorEric Dumazet <edumazet@google.com>
Wed, 2 Oct 2013 04:04:11 +0000 (21:04 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 28 Nov 2013 14:01:56 +0000 (14:01 +0000)
[ Upstream commit 80ad1d61e72d626e30ebe8529a0455e660ca4693 ]

commit 3ab5aee7fe84 ("net: Convert TCP & DCCP hash tables to use RCU /
hlist_nulls") incorrectly used sock_put() on TIMEWAIT sockets.

We should instead use inet_twsk_put()

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ipv4/inet_hashtables.c
net/ipv6/inet6_hashtables.c

index 984ec65..4afcf31 100644 (file)
@@ -268,7 +268,7 @@ begintw:
                        }
                        if (unlikely(!INET_TW_MATCH(sk, net, hash, acookie,
                                 saddr, daddr, ports, dif))) {
                        }
                        if (unlikely(!INET_TW_MATCH(sk, net, hash, acookie,
                                 saddr, daddr, ports, dif))) {
-                               sock_put(sk);
+                               inet_twsk_put(inet_twsk(sk));
                                goto begintw;
                        }
                        goto out;
                                goto begintw;
                        }
                        goto out;
index 73f1a00..e38290b 100644 (file)
@@ -110,7 +110,7 @@ begintw:
                                goto out;
                        }
                        if (!INET6_TW_MATCH(sk, net, hash, saddr, daddr, ports, dif)) {
                                goto out;
                        }
                        if (!INET6_TW_MATCH(sk, net, hash, saddr, daddr, ports, dif)) {
-                               sock_put(sk);
+                               inet_twsk_put(inet_twsk(sk));
                                goto begintw;
                        }
                        goto out;
                                goto begintw;
                        }
                        goto out;