diff options
-rw-r--r-- | net/rxrpc/ar-input.c | 4 | ||||
-rw-r--r-- | net/sunrpc/socklib.c | 2 | ||||
-rw-r--r-- | net/sunrpc/svcsock.c | 5 | ||||
-rw-r--r-- | net/sunrpc/xprtsock.c | 5 |
4 files changed, 7 insertions, 9 deletions
diff --git a/net/rxrpc/ar-input.c b/net/rxrpc/ar-input.c index 63ed75c40e29..4824a827d10d 100644 --- a/net/rxrpc/ar-input.c +++ b/net/rxrpc/ar-input.c | |||
@@ -612,9 +612,9 @@ int rxrpc_extract_header(struct rxrpc_skb_priv *sp, struct sk_buff *skb) | |||
612 | struct rxrpc_wire_header whdr; | 612 | struct rxrpc_wire_header whdr; |
613 | 613 | ||
614 | /* dig out the RxRPC connection details */ | 614 | /* dig out the RxRPC connection details */ |
615 | if (skb_copy_bits(skb, sizeof(struct udphdr), &whdr, sizeof(whdr)) < 0) | 615 | if (skb_copy_bits(skb, 0, &whdr, sizeof(whdr)) < 0) |
616 | return -EBADMSG; | 616 | return -EBADMSG; |
617 | if (!pskb_pull(skb, sizeof(struct udphdr) + sizeof(whdr))) | 617 | if (!pskb_pull(skb, sizeof(whdr))) |
618 | BUG(); | 618 | BUG(); |
619 | 619 | ||
620 | memset(sp, 0, sizeof(*sp)); | 620 | memset(sp, 0, sizeof(*sp)); |
diff --git a/net/sunrpc/socklib.c b/net/sunrpc/socklib.c index de70c78025d7..f217c348b341 100644 --- a/net/sunrpc/socklib.c +++ b/net/sunrpc/socklib.c | |||
@@ -155,7 +155,7 @@ int csum_partial_copy_to_xdr(struct xdr_buf *xdr, struct sk_buff *skb) | |||
155 | struct xdr_skb_reader desc; | 155 | struct xdr_skb_reader desc; |
156 | 156 | ||
157 | desc.skb = skb; | 157 | desc.skb = skb; |
158 | desc.offset = sizeof(struct udphdr); | 158 | desc.offset = 0; |
159 | desc.count = skb->len - desc.offset; | 159 | desc.count = skb->len - desc.offset; |
160 | 160 | ||
161 | if (skb_csum_unnecessary(skb)) | 161 | if (skb_csum_unnecessary(skb)) |
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; |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 65e759569e48..c1fc7b20bbc1 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -995,15 +995,14 @@ static void xs_udp_data_read_skb(struct rpc_xprt *xprt, | |||
995 | u32 _xid; | 995 | u32 _xid; |
996 | __be32 *xp; | 996 | __be32 *xp; |
997 | 997 | ||
998 | repsize = skb->len - sizeof(struct udphdr); | 998 | repsize = skb->len; |
999 | if (repsize < 4) { | 999 | if (repsize < 4) { |
1000 | dprintk("RPC: impossible RPC reply size %d!\n", repsize); | 1000 | dprintk("RPC: impossible RPC reply size %d!\n", repsize); |
1001 | return; | 1001 | return; |
1002 | } | 1002 | } |
1003 | 1003 | ||
1004 | /* Copy the XID from the skb... */ | 1004 | /* Copy the XID from the skb... */ |
1005 | xp = skb_header_pointer(skb, sizeof(struct udphdr), | 1005 | xp = skb_header_pointer(skb, 0, sizeof(_xid), &_xid); |
1006 | sizeof(_xid), &_xid); | ||
1007 | if (xp == NULL) | 1006 | if (xp == NULL) |
1008 | return; | 1007 | return; |
1009 | 1008 | ||