As noted in Marat Khalili's analysis, we identified this issue in the
production environment. Meanwhile, I simplified the problematic scenario
into corresponding test cases and added them to app/test/test_cksum.c

On Sat, Feb 21, 2026 at 2:35 AM Marat Khalili <[email protected]>
wrote:

> > I can suggest my condition to get a wrong checksum, which does not go
> into the details of how it was
> > observed in the wild:
> >
> > Function rte_raw_cksum_mbuf may produce incorrect result when multiple
> segments are present in the
> > checksummed range, and some of them have odd checksummed length. More
> precisely, if any segment except
> > the last one begins at an odd offset from the start, and arithmetic sum
> of its 16-bit words overflows,
> > the part that has overflown will be lost. Cases when there is only one
> segment, or all of the segment
> > sizes and checksum offsets are even, are not affected.
>
> Apologies, rushed to send. The "except the last one" condition is
> unnecessary. Corrected version:
>
> Function rte_raw_cksum_mbuf may produce incorrect result when multiple
> segments are present in the checksummed range, and some of them have odd
> checksummed length. More precisely, if any segment begins at an odd offset
> from the start, and arithmetic sum of its 16-bit words overflows, the part
> that has overflown will be lost. Cases when there is only one segment, or
> all of the segment sizes and checksum offsets are even, are not affected.
>

Reply via email to