diff --git a/Makefile b/Makefile index 8bca26994e0c55..2b467b2216e74b 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 170 +SUBLEVEL = 171 EXTRAVERSION = NAME = Curry Ramen diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index 95575bf78d5c17..5d59b5923e6bd6 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c @@ -873,7 +873,8 @@ static int esp_input(struct xfrm_state *x, struct sk_buff *skb) nfrags = 1; goto skip_cow; - } else if (!skb_has_frag_list(skb)) { + } else if (!skb_has_frag_list(skb) && + !skb_has_shared_frag(skb)) { nfrags = skb_shinfo(skb)->nr_frags; nfrags++; diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 79cf1385e8d24d..ec8279278deaeb 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -1463,6 +1463,8 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page, goto error; } + skb_shinfo(skb)->tx_flags |= SKBFL_SHARED_FRAG; + if (skb->ip_summed == CHECKSUM_NONE) { __wsum csum; csum = csum_page(page, offset, len); diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 76699ec8837026..51de2d4f7a2fba 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c @@ -921,7 +921,8 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb) nfrags = 1; goto skip_cow; - } else if (!skb_has_frag_list(skb)) { + } else if (!skb_has_frag_list(skb) && + !skb_has_shared_frag(skb)) { nfrags = skb_shinfo(skb)->nr_frags; nfrags++;