aboutsummaryrefslogtreecommitdiffstats
path: root/net/rxrpc/ar-recvmsg.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rxrpc/ar-recvmsg.c')
-rw-r--r--net/rxrpc/ar-recvmsg.c25
1 files changed, 1 insertions, 24 deletions
diff --git a/net/rxrpc/ar-recvmsg.c b/net/rxrpc/ar-recvmsg.c
index 34b5490dde65..e9aaa65c0778 100644
--- a/net/rxrpc/ar-recvmsg.c
+++ b/net/rxrpc/ar-recvmsg.c
@@ -180,16 +180,7 @@ int rxrpc_recvmsg(struct kiocb *iocb, struct socket *sock,
180 if (copy > len - copied) 180 if (copy > len - copied)
181 copy = len - copied; 181 copy = len - copied;
182 182
183 if (skb->ip_summed == CHECKSUM_UNNECESSARY || 183 ret = skb_copy_datagram_iovec(skb, offset, msg->msg_iov, copy);
184 skb->ip_summed == CHECKSUM_PARTIAL) {
185 ret = skb_copy_datagram_iovec(skb, offset,
186 msg->msg_iov, copy);
187 } else {
188 ret = skb_copy_and_csum_datagram_iovec(skb, offset,
189 msg->msg_iov);
190 if (ret == -EINVAL)
191 goto csum_copy_error;
192 }
193 184
194 if (ret < 0) 185 if (ret < 0)
195 goto copy_error; 186 goto copy_error;
@@ -348,20 +339,6 @@ copy_error:
348 _leave(" = %d", ret); 339 _leave(" = %d", ret);
349 return ret; 340 return ret;
350 341
351csum_copy_error:
352 _debug("csum error");
353 release_sock(&rx->sk);
354 if (continue_call)
355 rxrpc_put_call(continue_call);
356 rxrpc_kill_skb(skb);
357 if (!(flags & MSG_PEEK)) {
358 if (skb_dequeue(&rx->sk.sk_receive_queue) != skb)
359 BUG();
360 }
361 skb_kill_datagram(&rx->sk, skb, flags);
362 rxrpc_put_call(call);
363 return -EAGAIN;
364
365wait_interrupted: 342wait_interrupted:
366 ret = sock_intr_errno(timeo); 343 ret = sock_intr_errno(timeo);
367wait_error: 344wait_error: