diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index b6ea0fadb34fa26c5656bf0945c603140d03c624..c76c21604ffd9816334c04e0403ffd3a9af404a2 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2887,7 +2887,8 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len) goto out_free; } else if (reserve) { skb_reserve(skb, -reserve); - if (len < reserve) + if (len < reserve + sizeof(struct ipv6hdr) && + dev->min_header_len != dev->hard_header_len) skb_reset_network_header(skb); }