mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: bot+bpf-ci@kernel.org
To: madhav.khoslaa@gmail.com,ast@kernel.org,daniel@iogearbox.net,andrii@kernel.org
Cc: alexis.lothore@bootlin.com,madhav.khoslaa@gmail.com,eddyz87@gmail.com,ihor.solodrai@linux.dev,memxor@gmail.com,martin.lau@linux.dev,song@kernel.org,yonghong.song@linux.dev,jolsa@kernel.org,emil@etsalapatis.com,shuah@kernel.org,davem@davemloft.net,kuba@kernel.org,hawk@kernel.org,john.fastabend@gmail.com,sdf@fomichev.me,bpf@vger.kernel.org,linux-kselftest@vger.kernel.org,linux-kernel@vger.kernel.org,netdev@vger.kernel.org,ast@kernel.org,andrii@kernel.org,daniel@iogearbox.net,martin.lau@kernel.org,eddyz87@gmail.com,yonghong.song@linux.dev,mason@kernel.org,ihor.solodrai@linux.dev
Subject: Re: [PATCH v2 bpf] selftests/bpf: Fix csum_partial() dropping trailing byte on odd length
Date: Wed, 16 Sep 2026 12:13:49 +0000 (UTC)	[thread overview]
Message-ID: <fe92569462dc4decf36f4dcb3b45372fc0d42fb6842eda0d3396fa18ee32aa55@mail.kernel.org> (raw)
In-Reply-To: <20260916112554.413933-1-madhav.khoslaa@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3805 bytes --]

> diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h
> index 75133119c04a3..878c9fc5c37ca 100644
> --- a/tools/testing/selftests/bpf/network_helpers.h
> +++ b/tools/testing/selftests/bpf/network_helpers.h
> @@ -129,12 +129,23 @@ static __u16 csum_fold(__u32 csum)
>
>  static __wsum csum_partial(const void *buf, int len, __wsum sum)
>  {
> -	__u16 *p = (__u16 *)buf;
> +	const __u8 *p = buf;
>  	int num_u16 = len >> 1;
>  	int i;
>
>  	for (i = 0; i < num_u16; i++)
> -		sum += p[i];
> +		sum += ((const __u16 *)p)[i];
> +
> +	/*
> +	 * RFC 1071: an odd-length buffer's trailing byte is paired with
> +	 * a zero pad byte to form the final 16-bit word.
> +	 */
> +	if (len & 1) {
> +		__u16 tail = 0;
> +
> +		__builtin_memcpy(&tail, p + len - 1, 1);
> +		sum += tail;
> +	}
>
>  	return sum;
>  }
> diff --git a/tools/testing/selftests/bpf/prog_tests/flow_dissector_classification.c b/tools/testing/selftests/bpf/prog_tests/flow_dissector_classification.c
> index 80b153d3ddecf..421dfa6c4ea36 100644
> --- a/tools/testing/selftests/bpf/prog_tests/flow_dissector_classification.c
> +++ b/tools/testing/selftests/bpf/prog_tests/flow_dissector_classification.c
> @@ -27,7 +27,7 @@
>  #define TEST_NAME_MAX_LEN (32 + SUBTEST_NAME_MAX_LEN)
>  #define MAX_SOURCE_PORTS 3
>  #define TEST_PACKETS_COUNT 10
> -#define TEST_PACKET_LEN 100
> +#define TEST_PACKET_LEN 99
>  #define TEST_PACKET_PATTERN 'a'
>  #define TEST_IPV4 "192.168.0.1/32"
>  #define TEST_IPV6 "100::a/128"

The commit message body includes:

>     v1 -> v2:
>     - comment style: opening /* on its own line, per BPF selftests style
>     - Retarget the Fixes tag to bcc00987bc56. commit f4504af68575
>       ("selftests/bpf: move ip checksum helper to network helpers") moved
>       the helper, but sizeof(iphdr) is always a multiple of 32 bit words /
>       4 Bytes (iph->ihl counts in 4-byte words), so the odd-length path
>       was never reachable through build_ip_csum(). csum_partial() first
>       gets called with a length that isn't guaranteed even in
>       bcc00987bc56, via build_udp_v4_csum()/build_udp_v6_csum().
>     - TEST_PACKET_LEN 100 -> 99 so an existing test catches this instead
>       of the bug staying unexercised

This isn't a bug, but could the 'v1 -> v2:' block move below the '---'
line so it stays out of the committed changelog? Documentation/process/
submitting-patches.rst asks for inter-version changelogs to go below the
'---' separator so they are dropped when the patch is applied. The
content itself is useful review material, especially the reasoning for
retargeting the Fixes tag.

The commit message also includes this test failure excerpt:

>     Without the fix and with TEST_PACKET_LEN=99, flow_dissector_classification
>     fails under vmtest.sh:
>
>         test_flow_dissector_classification:FAIL:test third port unexpected
>         test third port: actual 0 != expected 10
>         #137/6   flow_dissector_classification/ipv6:FAIL
>         #137     flow_dissector_classification:FAIL
>         Summary: 1/0 PASSED, 0 SKIPPED, 1/6 FAILED

This isn't a bug, but would it be clearer to paste the full failure
output or mark the elision? The summary line says six subtests failed
(1/6 FAILED) while only the ipv6 one is shown, and test_progs.c runs
three ASSERT_EQ calls per subtest ('test first port', 'test second port',
'test third port'), so 'test first port' would have failed too. And
'1/0 PASSED' reports one passing test, which cannot come from a run whose
only named test failed.


---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md

CI run summary: https://github.com/kernel-patches/bpf/actions/runs/35091050280

  reply	other threads:[~2026-09-16 12:13 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16 11:25 Madhav Khosla
2026-09-16 12:13 ` bot+bpf-ci [this message]
2026-09-16 16:24   ` Madhav Khosla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fe92569462dc4decf36f4dcb3b45372fc0d42fb6842eda0d3396fa18ee32aa55@mail.kernel.org \
    --to=bot+bpf-ci@kernel.org \
    --cc=alexis.lothore@bootlin.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=eddyz87@gmail.com \
    --cc=emil@etsalapatis.com \
    --cc=hawk@kernel.org \
    --cc=ihor.solodrai@linux.dev \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=madhav.khoslaa@gmail.com \
    --cc=martin.lau@kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=mason@kernel.org \
    --cc=memxor@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=sdf@fomichev.me \
    --cc=shuah@kernel.org \
    --cc=song@kernel.org \
    --cc=yonghong.song@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®