diff options
Diffstat (limited to 'net/sunrpc/svcsock.c')
| -rw-r--r-- | net/sunrpc/svcsock.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index f16e7cdd6150..e50e7cf43737 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
| @@ -623,12 +623,9 @@ svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
| 623 | /* we can use it in-place */ | 623 | /* we can use it in-place */ |
| 624 | rqstp->rq_arg.head[0].iov_base = skb->data + sizeof(struct udphdr); | 624 | rqstp->rq_arg.head[0].iov_base = skb->data + sizeof(struct udphdr); |
| 625 | rqstp->rq_arg.head[0].iov_len = len; | 625 | rqstp->rq_arg.head[0].iov_len = len; |
| 626 | if (skb->ip_summed != CHECKSUM_UNNECESSARY) { | 626 | if (skb_checksum_complete(skb)) { |
| 627 | if ((unsigned short)csum_fold(skb_checksum(skb, 0, skb->len, skb->csum))) { | 627 | skb_free_datagram(svsk->sk_sk, skb); |
| 628 | skb_free_datagram(svsk->sk_sk, skb); | 628 | return 0; |
| 629 | return 0; | ||
| 630 | } | ||
| 631 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 632 | } | 629 | } |
| 633 | rqstp->rq_skbuff = skb; | 630 | rqstp->rq_skbuff = skb; |
| 634 | } | 631 | } |
