diff options
Diffstat (limited to 'net/sunrpc/svcsock.c')
| -rw-r--r-- | net/sunrpc/svcsock.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 1413cdcc131c..71d6072664d2 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
| @@ -617,7 +617,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
| 617 | svsk->sk_sk->sk_stamp = skb->tstamp; | 617 | svsk->sk_sk->sk_stamp = skb->tstamp; |
| 618 | set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); /* there may be more data... */ | 618 | set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); /* there may be more data... */ |
| 619 | 619 | ||
| 620 | len = skb->len - sizeof(struct udphdr); | 620 | len = skb->len; |
| 621 | rqstp->rq_arg.len = len; | 621 | rqstp->rq_arg.len = len; |
| 622 | 622 | ||
| 623 | rqstp->rq_prot = IPPROTO_UDP; | 623 | rqstp->rq_prot = IPPROTO_UDP; |
| @@ -641,8 +641,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
| 641 | skb_free_datagram_locked(svsk->sk_sk, skb); | 641 | skb_free_datagram_locked(svsk->sk_sk, skb); |
| 642 | } else { | 642 | } else { |
| 643 | /* we can use it in-place */ | 643 | /* we can use it in-place */ |
| 644 | rqstp->rq_arg.head[0].iov_base = skb->data + | 644 | rqstp->rq_arg.head[0].iov_base = skb->data; |
| 645 | sizeof(struct udphdr); | ||
| 646 | rqstp->rq_arg.head[0].iov_len = len; | 645 | rqstp->rq_arg.head[0].iov_len = len; |
| 647 | if (skb_checksum_complete(skb)) | 646 | if (skb_checksum_complete(skb)) |
| 648 | goto out_free; | 647 | goto out_free; |
