Linux 6.1.174
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.174 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.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/core/gro.c | 2 ++ net/core/skbuff.c | 11 ++++++++++- net/ipv4/udp_offload.c | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-)
Greg Kroah-Hartman (1):
Linux 6.1.174
Hyunwoo Kim (1):
net: skbuff: propagate shared-frag marker through frag-transfer helpers
William Bowling (1):
net: skbuff: preserve shared-frag marker during coalescing
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 173 +SUBLEVEL = 174 EXTRAVERSION = NAME = Curry Ramen
net/core/gro.c +2 -0
@@ -281,10 +281,12 @@ int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb) p->data_len += len; p->truesize += delta_truesize; p->len += len; +skb_shinfo (p)->flags |= skbinfo->flags &SKBFL_SHARED_FRAG ;if (lp != p) { lp->data_len += len; lp->truesize += delta_truesize; lp->len += len; +skb_shinfo (lp)->flags |= skbinfo->flags &SKBFL_SHARED_FRAG ; }NAPI_GRO_CB (skb)->same_flow =1 ;return 0 ;
net/core/skbuff.c +10 -1
@@ -1798,6 +1798,7 @@ struct sk_buff *__pskb_copy_fclone(struct sk_buff *skb, int headroom,skb_frag_ref (skb, i); }skb_shinfo (n)->nr_frags = i; +skb_shinfo (n)->flags |=skb_shinfo (skb)->flags &SKBFL_SHARED_FRAG ; }if (skb_has_frag_list (skb)) {
@@ -3789,6 +3790,8 @@ int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen) tgt->ip_summed =CHECKSUM_PARTIAL ; skb->ip_summed =CHECKSUM_PARTIAL ; +skb_shinfo (tgt)->flags |=skb_shinfo (skb)->flags &SKBFL_SHARED_FRAG ; +skb_len_add (skb, -shiftlen);skb_len_add (tgt, shiftlen);
@@ -4362,7 +4365,8 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,skb_copy_from_linear_data_offset (head_skb, offset,skb_put (nskb, hsize), hsize); -skb_shinfo (nskb)->flags |=skb_shinfo (head_skb)->flags & +skb_shinfo (nskb)->flags |= (skb_shinfo (head_skb)->flags | +skb_shinfo (frag_skb)->flags) &SKBFL_SHARED_FRAG ;if (skb_zerocopy_clone (nskb, frag_skb,GFP_ATOMIC ))
@@ -4379,6 +4383,9 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, nfrags =skb_shinfo (list_skb)->nr_frags; frag =skb_shinfo (list_skb)->frags; frag_skb = list_skb; + +skb_shinfo (nskb)->flags |=skb_shinfo (frag_skb)->flags &SKBFL_SHARED_FRAG ; +if (!skb_headlen (list_skb)) {BUG_ON (!nfrags); }else {
@@ -5512,6 +5519,8 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, from_shinfo->frags, from_shinfo->nr_frags * sizeof(skb_frag_t)); to_shinfo->nr_frags += from_shinfo->nr_frags; +if (from_shinfo->nr_frags) + to_shinfo->flags |= from_shinfo->flags &SKBFL_SHARED_FRAG ;if (!skb_cloned (from)) from_shinfo->nr_frags =0 ;
net/ipv4/udp_offload.c +2 -0
@@ -546,6 +546,8 @@ static int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb) p->truesize += skb->truesize; p->len += skb->len; +skb_shinfo (p)->flags |=skb_shinfo (skb)->flags &SKBFL_SHARED_FRAG ; +NAPI_GRO_CB (skb)->same_flow =1 ;return 0 ;