> diff --git a/tools/testing/selftests/bpf/prog_tests/wakeup_source_iter.c 
> b/tools/testing/selftests/bpf/prog_tests/wakeup_source_iter.c
> new file mode 100644
> index 000000000000..c8a38717e284
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/prog_tests/wakeup_source_iter.c

[ ... ]

> +static int get_ws_iter_stream(struct wakeup_source_iter *skel, int *iter_fd,
> +                           FILE **iter_file)
> +{
> +     *iter_fd = bpf_iter_create(
> +                     bpf_link__fd(skel->links.wakeup_source_collector));
> +     if (!ASSERT_OK_FD(*iter_fd, "iter_create"))
> +             return -1;
> +
> +     *iter_file = fdopen(*iter_fd, "r");
> +     if (!ASSERT_OK_PTR(*iter_file, "fdopen"))
> +             return -1;
> +
> +     return 0;
> +}

If bpf_iter_create() fails above, get_ws_iter_stream() returns -1 without
writing to *iter_file.

> +static void subtest_ws_iter_check_active_count(struct wakeup_source_iter 
> *skel)
> +{

[ ... ]

> +     char *line = NULL;
> +     bool found_ws = false;
> +     FILE *iter_file = NULL;
> +     int iter_fd = -1;

This function correctly initializes iter_file and iter_fd before calling
get_ws_iter_stream().

[ ... ]

> +}
> +
> +static void subtest_ws_iter_check_sleep_times(struct wakeup_source_iter 
> *skel)
> +{
> +     bool found_test_ws = false;
> +     struct WakeupSourceInfo ws_info;
> +     char *line = NULL;
> +     FILE *iter_file;
> +     int iter_fd;

In contrast to subtest_ws_iter_check_active_count(), iter_file and iter_fd
are not initialized here.

> +
> +     if (get_ws_iter_stream(skel, &iter_fd, &iter_file))
> +             goto cleanup;

[ ... ]

> +cleanup:
> +     if (iter_file)
> +             fclose(iter_file);
> +     else if (iter_fd >= 0)
> +             close(iter_fd);
> +}

If get_ws_iter_stream() fails at bpf_iter_create(), can this access
uninitialized iter_file and iter_fd? The cleanup code would then evaluate
garbage values, potentially calling fclose() with an invalid pointer.


---
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/21306880863

Reply via email to