summaryrefslogtreecommitdiffstats
path: root/net/rds/recv.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/recv.c')
-rw-r--r--net/rds/recv.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/rds/recv.c b/net/rds/recv.c
index bd82522534fc..47d7b1029b33 100644
--- a/net/rds/recv.c
+++ b/net/rds/recv.c
@@ -404,6 +404,7 @@ int rds_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
404 int ret = 0, nonblock = msg_flags & MSG_DONTWAIT; 404 int ret = 0, nonblock = msg_flags & MSG_DONTWAIT;
405 DECLARE_SOCKADDR(struct sockaddr_in *, sin, msg->msg_name); 405 DECLARE_SOCKADDR(struct sockaddr_in *, sin, msg->msg_name);
406 struct rds_incoming *inc = NULL; 406 struct rds_incoming *inc = NULL;
407 struct iov_iter to;
407 408
408 /* udp_recvmsg()->sock_recvtimeo() gets away without locking too.. */ 409 /* udp_recvmsg()->sock_recvtimeo() gets away without locking too.. */
409 timeo = sock_rcvtimeo(sk, nonblock); 410 timeo = sock_rcvtimeo(sk, nonblock);
@@ -449,8 +450,8 @@ int rds_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
449 rdsdebug("copying inc %p from %pI4:%u to user\n", inc, 450 rdsdebug("copying inc %p from %pI4:%u to user\n", inc,
450 &inc->i_conn->c_faddr, 451 &inc->i_conn->c_faddr,
451 ntohs(inc->i_hdr.h_sport)); 452 ntohs(inc->i_hdr.h_sport));
452 ret = inc->i_conn->c_trans->inc_copy_to_user(inc, msg->msg_iov, 453 iov_iter_init(&to, READ, msg->msg_iov, msg->msg_iovlen, size);
453 size); 454 ret = inc->i_conn->c_trans->inc_copy_to_user(inc, &to);
454 if (ret < 0) 455 if (ret < 0)
455 break; 456 break;
456 457