diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index fdc62a4586492c35783c2fd050778ce58207af7c..6a29af5cd3573a6a95bb55fc802469d12e1bd187 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -807,7 +807,7 @@ static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4, skb_shinfo(skb)->gso_size = cork->gso_size; skb_shinfo(skb)->gso_type = SKB_GSO_UDP_L4; - skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(len - sizeof(uh), + skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(len - sizeof(*uh), cork->gso_size); goto csum_partial; } diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 2f8eedbc512887b2a22bd80745d402a5740016a9..c47f065be5684f1a297e08f601d1d2b22d5c771d 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1081,6 +1081,8 @@ static int udp_v6_send_skb(struct sk_buff *skb, struct flowi6 *fl6, skb_shinfo(skb)->gso_size = cork->gso_size; skb_shinfo(skb)->gso_type = SKB_GSO_UDP_L4; + skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(len - sizeof(*uh), + cork->gso_size); goto csum_partial; }