Loading net/ceph/messenger.c +14 −10 Original line number Diff line number Diff line Loading @@ -520,7 +520,8 @@ static int ceph_tcp_recvmsg(struct socket *sock, void *buf, size_t len) struct msghdr msg = { .msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL }; int r; r = kernel_recvmsg(sock, &msg, &iov, 1, len, msg.msg_flags); iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, len); r = sock_recvmsg(sock, &msg, msg.msg_flags); if (r == -EAGAIN) r = 0; return r; Loading @@ -529,17 +530,20 @@ static int ceph_tcp_recvmsg(struct socket *sock, void *buf, size_t len) static int ceph_tcp_recvpage(struct socket *sock, struct page *page, int page_offset, size_t length) { void *kaddr; int ret; struct bio_vec bvec = { .bv_page = page, .bv_offset = page_offset, .bv_len = length }; struct msghdr msg = { .msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL }; int r; BUG_ON(page_offset + length > PAGE_SIZE); kaddr = kmap(page); BUG_ON(!kaddr); ret = ceph_tcp_recvmsg(sock, kaddr + page_offset, length); kunmap(page); return ret; iov_iter_bvec(&msg.msg_iter, READ | ITER_BVEC, &bvec, 1, length); r = sock_recvmsg(sock, &msg, msg.msg_flags); if (r == -EAGAIN) r = 0; return r; } /* Loading Loading
net/ceph/messenger.c +14 −10 Original line number Diff line number Diff line Loading @@ -520,7 +520,8 @@ static int ceph_tcp_recvmsg(struct socket *sock, void *buf, size_t len) struct msghdr msg = { .msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL }; int r; r = kernel_recvmsg(sock, &msg, &iov, 1, len, msg.msg_flags); iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, len); r = sock_recvmsg(sock, &msg, msg.msg_flags); if (r == -EAGAIN) r = 0; return r; Loading @@ -529,17 +530,20 @@ static int ceph_tcp_recvmsg(struct socket *sock, void *buf, size_t len) static int ceph_tcp_recvpage(struct socket *sock, struct page *page, int page_offset, size_t length) { void *kaddr; int ret; struct bio_vec bvec = { .bv_page = page, .bv_offset = page_offset, .bv_len = length }; struct msghdr msg = { .msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL }; int r; BUG_ON(page_offset + length > PAGE_SIZE); kaddr = kmap(page); BUG_ON(!kaddr); ret = ceph_tcp_recvmsg(sock, kaddr + page_offset, length); kunmap(page); return ret; iov_iter_bvec(&msg.msg_iter, READ | ITER_BVEC, &bvec, 1, length); r = sock_recvmsg(sock, &msg, msg.msg_flags); if (r == -EAGAIN) r = 0; return r; } /* Loading