diff options
Diffstat (limited to 'net/rds/bind.c')
-rw-r--r-- | net/rds/bind.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/rds/bind.c b/net/rds/bind.c index 20c156a73e73..5b5fb4ca8d3e 100644 --- a/net/rds/bind.c +++ b/net/rds/bind.c | |||
@@ -244,7 +244,8 @@ int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
244 | */ | 244 | */ |
245 | if (rs->rs_transport) { | 245 | if (rs->rs_transport) { |
246 | trans = rs->rs_transport; | 246 | trans = rs->rs_transport; |
247 | if (trans->laddr_check(sock_net(sock->sk), | 247 | if (!trans->laddr_check || |
248 | trans->laddr_check(sock_net(sock->sk), | ||
248 | binding_addr, scope_id) != 0) { | 249 | binding_addr, scope_id) != 0) { |
249 | ret = -ENOPROTOOPT; | 250 | ret = -ENOPROTOOPT; |
250 | goto out; | 251 | goto out; |
@@ -263,6 +264,8 @@ int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
263 | 264 | ||
264 | sock_set_flag(sk, SOCK_RCU_FREE); | 265 | sock_set_flag(sk, SOCK_RCU_FREE); |
265 | ret = rds_add_bound(rs, binding_addr, &port, scope_id); | 266 | ret = rds_add_bound(rs, binding_addr, &port, scope_id); |
267 | if (ret) | ||
268 | rs->rs_transport = NULL; | ||
266 | 269 | ||
267 | out: | 270 | out: |
268 | release_sock(sk); | 271 | release_sock(sk); |