On Fri, 24 Jan 2025 11:22:16 -0800, Martin KaFai Lau wrote: > On 1/23/25 6:45 PM, Stanislav Fomichev wrote: >> On 01/23, Martin KaFai Lau wrote: >>> On 1/23/25 11:18 AM, Stanislav Fomichev wrote: >>>> On 01/22, Shigeru Yoshida wrote: >>>>> The function bpf_test_init() now returns an error if user_size >>>>> (.data_size_in) is less than ETH_HLEN, causing the tests to >>>>> fail. Adjust the data size to ensure it meets the requirement of >>>>> ETH_HLEN. >>>>> >>>>> Signed-off-by: Shigeru Yoshida <syoshida@xxxxxxxxxx> >>>>> --- >>>>> .../testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c | 4 ++-- >>>>> .../testing/selftests/bpf/prog_tests/xdp_devmap_attach.c | 8 ++++---- >>>>> 2 files changed, 6 insertions(+), 6 deletions(-) >>>>> >>>>> diff --git >>>>> a/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c >>>>> b/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c >>>>> index c7f74f068e78..df27535995af 100644 >>>>> --- a/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c >>>>> +++ b/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c >>>>> @@ -52,10 +52,10 @@ static void test_xdp_with_cpumap_helpers(void) >>>>> ASSERT_EQ(info.id, val.bpf_prog.id, "Match program id to cpumap entry >>>>> prog_id"); >>>>> /* send a packet to trigger any potential bugs in there */ >>>>> - char data[10] = {}; >>>>> + char data[ETH_HLEN] = {}; >>>>> DECLARE_LIBBPF_OPTS(bpf_test_run_opts, opts, >>>>> .data_in = &data, >>>>> - .data_size_in = 10, >>>>> + .data_size_in = sizeof(data), >>>>> .flags = BPF_F_TEST_XDP_LIVE_FRAMES, >>>>> .repeat = 1, >>>>> ); >>>> >>>> We should still keep 10, but change the ASSERT_OK below to expect the >>>> error instead. Looking at the comment above, the purpose of the test >>>> is to exercise that error case. >>>> >>> >>> I think the bpf_prog_test_run_opts in this dev/cpumap test is to check >>> the >>> bpf_redirect_map() helper, so it expects the bpf_prog_test_run_opts to >>> succeed. >>> >>> It just happens the current data[10] cannot trigger the fixed bug >>> because >>> the bpf prog returns a XDP_REDIRECT instead of XDP_PASS, so >>> xdp_recv_frames >>> is not called. >>> >>> To test patch 1, a separate test is probably needed to trigger the bug >>> in >>> xdp_recv_frames() with a bpf prog returning XDP_PASS. >> Ah, yes, you're right, I missed the remaining parts that make sure >> the redirect happens > > Thanks for confirming and the review. > > Applied the fix. Hi Martin, Stanislav, Thank you for your comments and feedback! > Shigeru, please followup with a selftest to test the "less than > ETH_HLEN" bug addressed in Patch 1. You can reuse some of the > boilerplate codes from the xdp_cpumap_attach.c. The bpf prog can > simply be "return XDP_PASS;" and ensure that > BPF_F_TEST_XDP_LIVE_FRAMES is included in the > bpf_test_run_opts. Thanks. I'm not very familiar with bpf and its selftests, but I will try to make a new test according to your advice. Thanks, Shigeru