On Fri, May 3, 2024 at 2:46 PM Antonio Ojea <aojea@xxxxxxxxxx> wrote: > > On Fri, May 3, 2024 at 1:35 PM Antonio Ojea <aojea@xxxxxxxxxx> wrote: > > > > when the packet is processed with GSO and is SCTP it has to take into > > account the SCTP checksum. > > > > Signed-off-by: Antonio Ojea <aojea@xxxxxxxxxx> > > --- > > net/netfilter/nfnetlink_queue.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c > > index 00f4bd21c59b..428014aea396 100644 > > --- a/net/netfilter/nfnetlink_queue.c > > +++ b/net/netfilter/nfnetlink_queue.c > > @@ -600,6 +600,7 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue, > > case NFQNL_COPY_PACKET: > > if (!(queue->flags & NFQA_CFG_F_GSO) && > > entskb->ip_summed == CHECKSUM_PARTIAL && > > + (skb_csum_is_sctp(entskb) && skb_crc32c_csum_help(entskb)) && > > My bad, this is wrong, it should be an OR so skb_checksum_help is > always evaluated. > Pablo suggested in the bugzilla to use a helper, so I'm not sure this > is the right fix, I've tried > to look for similar solutions to find a more consistent solution but > I'm completely new to the > kernel codebase so some guidance will be appreciated. > > - skb_checksum_help(entskb)) > + ((skb_csum_is_sctp(entskb) && > skb_crc32c_csum_help(entskb)) || > + skb_checksum_help(entskb))) > ... and with this patch the regression test fails, so back to square 0. It seems I still didn't find the root cause > data_len = READ_ONCE(queue->copy_range); > > > skb_checksum_help(entskb)) > > return NULL; > > > > -- > > 2.45.0.rc1.225.g2a3ae87e7f-goog > >