aboutsummaryrefslogtreecommitdiffstats
path: root/net/packet/af_packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r--net/packet/af_packet.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 75c92a87e7b2..d6e94dc7e290 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -2715,10 +2715,12 @@ tpacket_error:
2715 } 2715 }
2716 } 2716 }
2717 2717
2718 if (po->has_vnet_hdr && virtio_net_hdr_to_skb(skb, vnet_hdr, 2718 if (po->has_vnet_hdr) {
2719 vio_le())) { 2719 if (virtio_net_hdr_to_skb(skb, vnet_hdr, vio_le())) {
2720 tp_len = -EINVAL; 2720 tp_len = -EINVAL;
2721 goto tpacket_error; 2721 goto tpacket_error;
2722 }
2723 virtio_net_hdr_set_proto(skb, vnet_hdr);
2722 } 2724 }
2723 2725
2724 skb->destructor = tpacket_destruct_skb; 2726 skb->destructor = tpacket_destruct_skb;
@@ -2915,6 +2917,7 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
2915 if (err) 2917 if (err)
2916 goto out_free; 2918 goto out_free;
2917 len += sizeof(vnet_hdr); 2919 len += sizeof(vnet_hdr);
2920 virtio_net_hdr_set_proto(skb, &vnet_hdr);
2918 } 2921 }
2919 2922
2920 skb_probe_transport_header(skb, reserve); 2923 skb_probe_transport_header(skb, reserve);