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 | ||
