diff options
Diffstat (limited to 'net/rds/send.c')
-rw-r--r-- | net/rds/send.c | 4 |
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); |