On 22/07/2025 18:03, Paolo Abeni wrote: > On 7/21/25 8:34 PM, Gal Pressman wrote: >> On 21/07/2025 18:40, Jakub Kicinski wrote: >>> On Mon, 21 Jul 2025 14:43:15 +0300 Nimrod Oren wrote: >>>>> +static struct udphdr *filter_udphdr(struct xdp_md *ctx, __u16 port) >>>>> +{ >>>>> + void *data_end = (void *)(long)ctx->data_end; >>>>> + void *data = (void *)(long)ctx->data; >>>>> + struct udphdr *udph = NULL; >>>>> + struct ethhdr *eth = data; >>>>> + >>>>> + if (data + sizeof(*eth) > data_end) >>>>> + return NULL; >>>>> + >>>> >>>> This check assumes that the packet headers reside in the linear part of >>>> the xdp_buff. However, this assumption does not hold across all drivers. >>>> For example, in mlx5, the linear part is empty when using multi-buffer >>>> mode with striding rq configuration. This causes all multi-buffer test >>>> cases to fail over mlx5. >>>> >>>> To ensure correctness across all drivers, all direct accesses to packet >>>> data should use these safer helper functions instead: >>>> bpf_xdp_load_bytes() and bpf_xdp_store_bytes(). >>>> >>>> Related discussion and context can be found here: >>>> https://github.com/xdp-project/xdp-tools/pull/409 >>> >>> That's a reasonable way to modify the test. But I'm not sure it's >>> something that should be blocking merging the patches. >>> Or for that matter whether it's Mohsin's responsibility to make the >>> test cater to quirks of mlx5, >> >> Definitely not a quirk, you cannot assume the headers are in the linear >> part, especially if you're going to put this program as reference in the >> kernel tree. >> >> This issue has nothing to do with mlx5, but a buggy XDP program. > > Note that with the self-tests we have a slightly different premise WRT > the actual kernel code. We prefer on-boarding tests cases that work for > some/most of the possible setup vs perfect ones, and eventually improve > incrementally as needed: the goal is to increase the code coverage _and_ > encourage people to contribute new tests upstream. The changes required to fix the test are trivial, and Nimrod provided a reference for the conversion.