diff --git a/Makefile.rhelver b/Makefile.rhelver index ed620e59bb..e404ab0a6c 100644 --- a/Makefile.rhelver +++ b/Makefile.rhelver @@ -12,7 +12,7 @@ RHEL_MINOR = 10 # # Use this spot to avoid future merge conflicts. # Do not trim this comment. -RHEL_RELEASE = 553.123.1 +RHEL_RELEASE = 553.124.1 # # ZSTREAM diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index db89a66151..4b162d06e9 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c @@ -913,7 +913,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 2a61745181..b3b746eb31 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -1347,6 +1347,9 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page, goto error; } + if (!(flags & MSG_NO_SHARED_FRAGS)) + skb_shinfo(skb)->tx_flags |= SKBTX_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 2ff1a109f4..e16b1e369c 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c @@ -971,7 +971,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++;