diff --git a/tools/testing/selftests/bpf/prog_tests/memcg_ops.c b/tools/testing/selftests/bpf/prog_tests/memcg_ops.c new file mode 100644 index 000000000..3f989bcfb --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/memcg_ops.c
[ ... ]
+void test_memcg_ops_double_attach(void) +{
- struct bpf_object *obj, *obj2;
- struct bpf_map *map, *map2;
- struct bpf_link *link = NULL, *link2 = NULL;
- int err;
- obj = bpf_object__open_file("memcg_ops.bpf.o", NULL);
- err = libbpf_get_error(obj);
- if (CHECK_FAIL(err)) {
obj = NULL;goto out;- }
- err = bpf_object__load(obj);
- if (CHECK_FAIL(err))
goto out;- map = bpf_object__find_map_by_name(obj, "mcg_ops");
- if (!ASSERT_OK_PTR(map, "bpf_object__find_map_by_name"))
goto out;- link = bpf_map__attach_struct_ops(map);
- if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops"))
goto out;- obj2 = bpf_object__open_file("memcg_ops.bpf.o", NULL);
- err = libbpf_get_error(obj2);
- if (CHECK_FAIL(err)) {
obj2 = NULL;goto out;- }
- err = bpf_object__load(obj2);
- if (CHECK_FAIL(err))
goto out;- map2 = bpf_object__find_map_by_name(obj2, "mcg_ops");
- if (!ASSERT_OK_PTR(map, "bpf_object__find_map_by_name"))
^^^
In test_memcg_ops_double_attach(), the NULL check is validating the wrong variable. The code retrieves map2 from obj2, but then checks map (from the first object) instead of map2. This means if bpf_object__find_map_by_name() returns NULL for map2, the test won't catch it and will proceed to use the potentially NULL map2 pointer in the subsequent attach call.
Should this be checking map2 instead?
goto out;- link2 = bpf_map__attach_struct_ops(map2);
- if (!ASSERT_ERR_PTR(link2, "bpf_map__attach_struct_ops")) {
bpf_link__destroy(link2);goto out;- }
+out:
- if (link)
bpf_link__destroy(link);- if (obj)
bpf_object__close(obj);- if (obj2)
bpf_object__close(obj2);+}
--- 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/19486904708