Skip to contentSkip to conversation

Linux 6.12.87

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages May 8 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.12.87 kernel.

All users of the 6.12 kernel series must upgrade.

The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile              |    2 +-
 net/ipv4/esp4.c       |    3 ++-
 net/ipv4/ip_output.c  |    2 ++
 net/ipv6/esp6.c       |    3 ++-
 net/ipv6/ip6_output.c |    2 ++
 5 files changed, 9 insertions(+), 3 deletions(-)

Greg Kroah-Hartman (1):

      Linux 6.12.87

Kuan-Ting Chen (1):
xfrm: esp: avoid in-place decrypt on shared skb frags

author maintainer
#1 lore raw
Makefile +1 -1
index f5053b825039..e644f9a1fd5a 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 12
-SUBLEVEL = 86
+SUBLEVEL = 87
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
net/ipv4/esp4.c +2 -1
index deea0b934d91..2f548900e238 100644
@@ -872,7 +872,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++;
 
net/ipv4/ip_output.c +2 -0
index 0bda561aa8a8..ba51fc42531c 100644
@@ -1231,6 +1231,8 @@ static int __ip_append_data(struct sock *sk,
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;
net/ipv6/esp6.c +2 -1
index 20c1149f0f0a..a797d5740d9b 100644
@@ -914,7 +914,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++;
 
net/ipv6/ip6_output.c +2 -0
index 0aedb20072ac..31021dc40e52 100644
@@ -1761,6 +1761,8 @@ static int __ip6_append_data(struct sock *sk,
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;