Re: [PATCH net-next 1/2] netfilter: nft_queue: compute SCTP checksum

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>





[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux