BPF List
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Tao Cui" <cui.tao@linux.dev>
Cc: tj@kernel.org, hannes@cmpxchg.org, bpf@vger.kernel.org, mkoutny@suse.com
Subject: Re: [RFC PATCH v7 2/4] selftests/bpf: add iocost cost model test
Date: Thu, 24 Sep 2026 05:57:10 +0000	[thread overview]
Message-ID: <20260924055710.80FD61F00899@smtp.kernel.org> (raw)
In-Reply-To: <20260924054549.2271705-3-cui.tao@linux.dev>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] selftests/bpf: endianness bug when writing 64-bit device ID to 32-bit dev field
--

commit d5f4da7dcc6342f2064a4e05e68659fc439deaa1
Author: Tao Cui <cuitao@kylinos.cn>

selftests/bpf: add iocost cost model test

Add an example cost model implementing the full builtin linear HDD
formula at double cost, and a test which attaches it to one device:
the dev member of the struct_ops is written through the map's
initial value before load, as hid_bpf tests do with hid_id, and
attaching the struct_ops attaches the model to the device.

> diff --git a/tools/testing/selftests/bpf/prog_tests/iocost_model.c b/tools/testing/selftests/bpf/prog_tests/iocost_model.c
> new file mode 100644
> index 0000000000000..156c75367af05
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/prog_tests/iocost_model.c
> @@ -0,0 +1,182 @@
[ ... ]
> +void serial_test_iocost_model(void)
> +{
> +	struct iocost_model *skel, *second;
> +	unsigned int maj, min;
> +	__u64 *ops_dev, *sdev;
> +	int err;
> +	char model[32], *dev;
[ ... ]
> +	/* dev is the first member of struct iocost_model_ops */
> +	ops_dev = bpf_map__initial_value(skel->maps.iocost_2x, NULL);
> +	if (!ASSERT_OK_PTR(ops_dev, "initial_value")) {
> +		iocost_model__destroy(skel);
> +		return;
> +	}
> +	*ops_dev = makedev(maj, min);

[Severity: Medium]
Will this 64-bit write cause an endianness issue on big-endian architectures?

Since the first member dev of struct iocost_model_ops is a 32-bit dev_t,
casting the pointer to __u64 * and writing a 64-bit value will place the
actual device ID into the trailing padding on big-endian systems, leaving the
dev field as 0. Could this cause the test to fail by attaching to the wrong
device or being rejected by the kernel?

[ ... ]
> +		/* a second model on the same device fails with -EBUSY */
> +		second = iocost_model__open();
> +		if (ASSERT_OK_PTR(second, "second_open")) {
> +			sdev = bpf_map__initial_value(
> +					second->maps.iocost_2x, NULL);
> +			if (!ASSERT_OK_PTR(sdev, "second_initial_value"))
> +				goto out_destroy;
> +			*sdev = makedev(maj, min);

[Severity: Medium]
Does this have the same 64-bit write endianness issue on big-endian systems
as the first model?

[ ... ]
> +void serial_test_iocost_model_streams(void)
> +{
> +	struct iocost_ms *skel;
> +	unsigned int maj, min;
> +	__u64 *ops_dev;
> +	int err;
> +	char model[32], *dev;
[ ... ]
> +	ops_dev = bpf_map__initial_value(skel->maps.iocost_ms, NULL);
> +	if (!ASSERT_OK_PTR(ops_dev, "initial_value")) {
> +		iocost_ms__destroy(skel);
> +		return;
> +	}
> +	*ops_dev = makedev(maj, min);

[Severity: Medium]
Does this also share the same 64-bit write endianness issue for the 32-bit
dev field?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260924054549.2271705-1-cui.tao@linux.dev?part=2

  reply	other threads:[~2026-09-24  5:57 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-24  5:45 [RFC PATCH v7 0/4] blk-iocost: BPF struct_ops cost model Tao Cui
2026-09-24  5:45 ` [RFC PATCH v7 1/4] blk-iocost: add BPF struct_ops cost model support Tao Cui
2026-09-24  6:00   ` sashiko-bot
2026-09-24  6:30   ` bot+bpf-ci
2026-09-29  0:42   ` Tejun Heo
2026-09-29 13:42     ` Tao Cui
2026-09-29 16:27       ` Tejun Heo
2026-09-30  4:14         ` Tao Cui
2026-09-24  5:45 ` [RFC PATCH v7 2/4] selftests/bpf: add iocost cost model test Tao Cui
2026-09-24  5:57   ` sashiko-bot [this message]
2026-09-24  6:30   ` bot+bpf-ci
2026-09-24  5:45 ` [RFC PATCH v7 3/4] blk-iocost: add iocost_ioc_tick tracepoint for per-period device summary Tao Cui
2026-09-24  6:17   ` bot+bpf-ci
2026-09-29  0:42   ` Tejun Heo
2026-09-29 13:46     ` Tao Cui
2026-09-24  5:45 ` [RFC PATCH v7 4/4] docs: cgroup-v2: document the iocost BPF cost model attachment Tao Cui
2026-09-29  0:42 ` [RFC PATCH v7 0/4] blk-iocost: BPF struct_ops cost model Tejun Heo
2026-09-29 13:39   ` Tao Cui
2026-09-29 16:27     ` Tejun Heo
2026-09-30  4:09       ` Tao Cui

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=20260924055710.80FD61F00899@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=cui.tao@linux.dev \
    --cc=hannes@cmpxchg.org \
    --cc=mkoutny@suse.com \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=tj@kernel.org \
    /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