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))) data_len = READ_ONCE(queue->copy_range); > skb_checksum_help(entskb)) > return NULL; > > -- > 2.45.0.rc1.225.g2a3ae87e7f-goog >