aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/send.c')
-rw-r--r--net/rds/send.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/rds/send.c b/net/rds/send.c
index a82fb660ec0..44222c0607c 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -955,11 +955,13 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
955 release_sock(sk); 955 release_sock(sk);
956 } 956 }
957 957
958 /* racing with another thread binding seems ok here */ 958 lock_sock(sk);
959 if (daddr == 0 || rs->rs_bound_addr == 0) { 959 if (daddr == 0 || rs->rs_bound_addr == 0) {
960 release_sock(sk);
960 ret = -ENOTCONN; /* XXX not a great errno */ 961 ret = -ENOTCONN; /* XXX not a great errno */
961 goto out; 962 goto out;
962 } 963 }
964 release_sock(sk);
963 965
964 /* size of rm including all sgs */ 966 /* size of rm including all sgs */
965 ret = rds_rm_size(msg, payload_len); 967 ret = rds_rm_size(msg, payload_len);