diff options
author | Eric Dumazet <edumazet@google.com> | 2015-03-18 02:32:31 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-18 03:02:29 +0100 |
commit | 0470c8ca1d57927f2cc3e1d5add1fb2834609447 (patch) | |
tree | 798f475f48fbdff0eae359c3f345a1a0eaf83ca2 /include/net/inet_connection_sock.h | |
parent | inet: avoid fastopen lock for regular accept() (diff) | |
download | linux-0470c8ca1d57927f2cc3e1d5add1fb2834609447.tar.xz linux-0470c8ca1d57927f2cc3e1d5add1fb2834609447.zip |
inet: fix request sock refcounting
While testing last patch series, I found req sock refcounting was wrong.
We must set skc_refcnt to 1 for all request socks added in hashes,
but also on request sockets created by FastOpen or syncookies.
It is tricky because we need to defer this initialization so that
future RCU lookups do not try to take a refcount on a not yet
fully initialized request socket.
Also get rid of ireq_refcnt alias.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Fixes: 13854e5a6046 ("inet: add proper refcounting to request sock")
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/inet_connection_sock.h')
-rw-r--r-- | include/net/inet_connection_sock.h | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 191feec60205..b9a6b0a94cc6 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -275,11 +275,6 @@ static inline void inet_csk_reqsk_queue_add(struct sock *sk, struct sock *child) { reqsk_queue_add(&inet_csk(sk)->icsk_accept_queue, req, sk, child); - /* before letting lookups find us, make sure all req fields - * are committed to memory. - */ - smp_wmb(); - atomic_set(&req->rsk_refcnt, 1); } void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req, |