Patch "packet: round up linear to header len" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
packet: round up linear to header len
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
packet-round-up-linear-to-header-len.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Tue Feb 14 17:03:08 PST 2017
From: Willem de Bruijn <[email protected]>
Date: Tue, 7 Feb 2017 15:57:21 -0500
Subject: packet: round up linear to header len
From: Willem de Bruijn <[email protected]>
[ Upstream commit 57031eb794906eea4e1c7b31dc1e2429c0af0c66 ]
Link layer protocols may unconditionally pull headers, as Ethernet does in eth_type_trans. Ensure that the entire link layer header always lies in the skb linear segment. tpacket_snd has such a check. Extend this to packet_snd.
Variable length link layer headers complicate the computation somewhat. Here skb->len may be smaller than dev->hard_header_len.
Round up the linear length to be at least as long as the smallest of the two.
--- net/packet/af_packet.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
net/packet/af_packet.c +4 -3
@@ -2813,7 +2813,7 @@ static int packet_snd(struct socket *socstruct virtio_net_hdr vnet_hdr = {0 };int offset =0 ;struct packet_sock *po =pkt_sk (sk); -int hlen, tlen; +int hlen, tlen, linear;int extra_len =0 ;/*
@@ -2874,8 +2874,9 @@ static int packet_snd(struct socket *soc err = -ENOBUFS ; hlen =LL_RESERVED_SPACE (dev); tlen = dev->needed_tailroom; - skb =packet_alloc_skb (sk, hlen + tlen, hlen, len, -__virtio16_to_cpu (vio_le (), vnet_hdr.hdr_len), + linear =__virtio16_to_cpu (vio_le (), vnet_hdr.hdr_len); + linear =max (linear,min_t (int, len, dev->hard_header_len)); + skb =packet_alloc_skb (sk, hlen + tlen, hlen, len, linear, msg->msg_flags &MSG_DONTWAIT , &err);if (skb ==NULL ) goto out_unlock;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/packet-round-up-linear-to-header-len.patch queue-4.9/tun-read-vnet_hdr_sz-once.patch queue-4.9/ipv6-fix-ip6_tnl_parse_tlv_enc_lim.patch queue-4.9/net-introduce-device-min_header_len.patch queue-4.9/macvtap-read-vnet_hdr_size-once.patch