aboutsummaryrefslogtreecommitdiffstats
path: root/net/rxrpc/ar-input.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-04-11 15:31:34 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-11 15:31:34 -0400
commitc64a73d584cc344915baee1183c791c0d0c42d79 (patch)
treea36049a8905dbcbbd5e047e47d48682a1d9c7fef /net/rxrpc/ar-input.c
parenta6db4494d218c2e559173661ee972e048dc04fdd (diff)
parent4d0fc73ebe94ac984a187f21fbf4f3a1ac846f5a (diff)
Merge branch 'udp-pull'
Willem de Bruijn says: ==================== net: fix udp pull header breakage Commit e6afc8ace6dd ("udp: remove headers from UDP packets before queueing") modified udp receive processing to pull headers before enqueue and to not expect them on dequeue. The patch missed protocols on top of udp with in-kernel implementations that have their own skb_recv_datagram calls and dequeue logic. Modify these datapaths to also no longer expect a udp header at skb->data. Sunrpc and rxrpc are the only two protocols that call this function and contain references to udphr (some others, like tipc, are based on encap_rcv, which acts before enqueue, before the the header pull). ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rxrpc/ar-input.c')
-rw-r--r--net/rxrpc/ar-input.c4
1 files changed, 2 insertions, 2 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));