summaryrefslogtreecommitdiffstats
path: root/net/rds/bind.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2018-09-25 11:19:44 +0200
committerIngo Molnar <mingo@kernel.org>2018-09-25 11:19:44 +0200
commitfb437bc8fe36c964d9bf2f4b568e6c77c235c5e3 (patch)
tree7d3a08a88aad2e7541231f0241d97e64df4a4208 /net/rds/bind.c
parent49e73246cbe6fe0df9cae2db87f31cdc3a0b2b61 (diff)
parent6bf4ca7fbc85d80446ac01c0d1d77db4d91a6d84 (diff)
downloadtalos-op-linux-fb437bc8fe36c964d9bf2f4b568e6c77c235c5e3.tar.gz
talos-op-linux-fb437bc8fe36c964d9bf2f4b568e6c77c235c5e3.zip
Merge tag 'v4.19-rc5' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/rds/bind.c')
-rw-r--r--net/rds/bind.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/rds/bind.c b/net/rds/bind.c
index 3ab55784b637..762d2c6788a3 100644
--- a/net/rds/bind.c
+++ b/net/rds/bind.c
@@ -76,11 +76,13 @@ struct rds_sock *rds_find_bound(const struct in6_addr *addr, __be16 port,
struct rds_sock *rs;
__rds_create_bind_key(key, addr, port, scope_id);
- rs = rhashtable_lookup_fast(&bind_hash_table, key, ht_parms);
+ rcu_read_lock();
+ rs = rhashtable_lookup(&bind_hash_table, key, ht_parms);
if (rs && !sock_flag(rds_rs_to_sk(rs), SOCK_DEAD))
rds_sock_addref(rs);
else
rs = NULL;
+ rcu_read_unlock();
rdsdebug("returning rs %p for %pI6c:%u\n", rs, addr,
ntohs(port));
@@ -235,6 +237,7 @@ int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
goto out;
}
+ sock_set_flag(sk, SOCK_RCU_FREE);
ret = rds_add_bound(rs, binding_addr, &port, scope_id);
if (ret)
goto out;
OpenPOWER on IntegriCloud