]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/bpf: Fix cgroup_mprog_ordering failure due to uninitialized variable
authorYonghong Song <yonghong.song@linux.dev>
Wed, 11 Jun 2025 16:21:03 +0000 (09:21 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 11 Jun 2025 19:32:50 +0000 (12:32 -0700)
On arm64, the cgroup_mprog_ordering selftest failed with test_progs run
when building with clang compiler. The reason is due to socklen_t optlen
not initialized.

In kernel function do_ip_getsockopt(), we have

        if (copy_from_sockptr(&len, optlen, sizeof(int)))
                return -EFAULT;
        if (len < 0)
                return -EINVAL;

The above 'len' variable is a negative value and hence the test failed.

But the test is okay on x86_64. I checked the x86_64 asm code and I didn't
see explicit initialization of 'optlen' but its value is 0 so kernel
didn't return error. This should be a pure luck.

Fix the bug by initializing 'oplen' var properly.

Fixes: e422d5f118e4 ("selftests/bpf: Add two selftests for mprog API based cgroup progs")
Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20250611162103.1623692-1-yonghong.song@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/prog_tests/cgroup_mprog_ordering.c

index 4a4e9710b474a9945eb5116977e0d3965fe3adec..a36d2e968bc5b2b2805c59cbd29372ba24ef13d2 100644 (file)
@@ -12,7 +12,7 @@ static int run_getsockopt_test(int cg_parent, int sock_fd, bool has_relative_fd)
        struct cgroup_preorder *skel = NULL;
        struct bpf_program *prog;
        __u8 *result, buf;
-       socklen_t optlen;
+       socklen_t optlen = 1;
        int err = 0;
 
        skel = cgroup_preorder__open_and_load();