From: Simon Horman Date: Mon, 3 Apr 2017 19:42:58 +0000 (-0400) Subject: flow dissector: correct size of storage for ARP X-Git-Tag: Ubuntu-5.10.0-12.13~10579^2~11 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=ac6a3722fed67c658a435187d0254ae119d845d3;p=mirror_ubuntu-hirsute-kernel.git flow dissector: correct size of storage for ARP The last argument to __skb_header_pointer() should be a buffer large enough to store struct arphdr. This can be a pointer to a struct arphdr structure. The code was previously using a pointer to a pointer to struct arphdr. By my counting the storage available both before and after is 8 bytes on x86_64. Fixes: 55733350e5e8 ("flow disector: ARP support") Reported-by: Nicolas Iooss Signed-off-by: Simon Horman Signed-off-by: David S. Miller --- diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index c35aae13c8d2..d98d4998213d 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -390,7 +390,7 @@ mpls: unsigned char ar_tip[4]; } *arp_eth, _arp_eth; const struct arphdr *arp; - struct arphdr *_arp; + struct arphdr _arp; arp = __skb_header_pointer(skb, nhoff, sizeof(_arp), data, hlen, &_arp);