On Thu, 2024-05-30 at 20:16 +0000, Mina Almasry wrote: > diff --git a/net/core/gro.c b/net/core/gro.c > index 26f09c3e830b7..7b9d018f552bd 100644 > --- a/net/core/gro.c > +++ b/net/core/gro.c > @@ -422,6 +422,9 @@ static void gro_pull_from_frag0(struct sk_buff *skb, int grow) > { > struct skb_shared_info *pinfo = skb_shinfo(skb); > > + if (WARN_ON_ONCE(!skb_frags_readable(skb))) > + return; > + > BUG_ON(skb->end - skb->tail < grow); > > memcpy(skb_tail_pointer(skb), NAPI_GRO_CB(skb)->frag0, grow); > @@ -443,7 +446,7 @@ static void gro_try_pull_from_frag0(struct sk_buff *skb) > { > int grow = skb_gro_offset(skb) - skb_headlen(skb); > > - if (grow > 0) > + if (grow > 0 && skb_frags_readable(skb)) > gro_pull_from_frag0(skb, grow); > } I'm unsure if this was already mentioned, so please pardon the eventual duplicate... The above code is quite critical performance wise, and the previous patch already prevent frag0 from being set to a non paged frag, so what about dropping the above additional checks? thanks! Paolo