| From: Eric Dumazet <edumazet@google.com> |
| Date: Tue, 1 Oct 2013 21:04:11 -0700 |
| Subject: net: do not call sock_put() on TIMEWAIT sockets |
| |
| [ 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 | 2 +- |
| net/ipv6/inet6_hashtables.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c |
| index 984ec65..4afcf31 100644 |
| --- a/net/ipv4/inet_hashtables.c |
| +++ b/net/ipv4/inet_hashtables.c |
| @@ -268,7 +268,7 @@ begintw: |
| } |
| 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; |
| diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c |
| index 73f1a00..e38290b 100644 |
| --- a/net/ipv6/inet6_hashtables.c |
| +++ b/net/ipv6/inet6_hashtables.c |
| @@ -110,7 +110,7 @@ begintw: |
| 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; |