From: Jiri Olsa <olsajiri@gmail.com>
To: Yonghong Song <yonghong.song@linux.dev>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
kernel-team@fb.com, Martin KaFai Lau <martin.lau@kernel.org>
Subject: Re: [PATCH bpf-next v2 5/5] selftests/bpf: Add a selftest with available_filter_functions_addrs
Date: Fri, 22 Mar 2024 13:26:22 +0100 [thread overview]
Message-ID: <Zf147sHXbgMs1yDZ@krava> (raw)
In-Reply-To: <20240321200124.2220345-1-yonghong.song@linux.dev>
On Thu, Mar 21, 2024 at 01:01:24PM -0700, Yonghong Song wrote:
> The current kprobe_multi_bench_attach/kernel test
> reads sym names from /sys/kernel/tracing/available_filter_functions.
> Some names do not agree with the corresponding entries in /proc/kallsyms
> since the corresponding /proc/kallsyms syms have suffix '.llvm.<hash>'.
> Actually, if we pass symbol names in /proc/kallsyms,
> kprobe_multi_attach will be okay.
>
> This patch added a new subtest where addresses are retrieved from
> /sys/kernel/tracing/available_filter_functions_addrs, and use the
> address to consule /proc/kallsyms to get the function name.
hm, I don't understand the reason for this test.. AFAICS test_kprobe_multi_bench_attach
is doing that already, just reading available_filter_functions file
both available_filter_functions_addrs and available_filter_functions have the
same functions, there's just extra addresses in available_filter_functions_addrs
> + *symsp = syms;
> + *cntp = cnt;
> +
> +error:
> + fclose(f);
> + hashmap__free(map);
> + if (err) {
> + for (i = 0; i < cnt; i++)
> + free(syms[i]);
> + free(syms);
> + }
> + return err;
> +}
> +
> static void test_kprobe_multi_bench_attach(bool kernel)
> {
> LIBBPF_OPTS(bpf_kprobe_multi_opts, opts);
> @@ -521,6 +617,47 @@ static void test_attach_override(void)
> kprobe_multi_override__destroy(skel);
> }
there's lot of duplicated code in both
get_syms_from_addr/get_syms
test_attach_kernel_addrs_to_sym/test_kprobe_multi_bench_attach
would be great to put it together
>
> +static void test_attach_kernel_addrs_to_sym(void)
> +{
> + LIBBPF_OPTS(bpf_kprobe_multi_opts, opts);
> + struct kprobe_multi_empty *skel;
> + struct bpf_link *link;
> + char **syms = NULL;
> + size_t cnt = 0;
> + int i, err;
> +
> + err = get_syms_from_addr(&syms, &cnt);
> + if (err == -ENOENT) {
> + test__skip();
> + return;
> + }
> + if (!ASSERT_OK(err, "get_syms_from_addr"))
> + return;
> +
> + skel = kprobe_multi_empty__open_and_load();
> + if (!ASSERT_OK_PTR(skel, "kprobe_multi_empty__open_and_load"))
> + goto cleanup;
> +
> + opts.syms = (const char **) syms;
> + opts.cnt = cnt;
> +
> + link = bpf_program__attach_kprobe_multi_opts(skel->progs.test_kprobe_empty,
> + NULL, &opts);
> +
> + if (!ASSERT_OK_PTR(link, "bpf_program__attach_kprobe_multi_opts"))
> + goto cleanup;
> +
> + bpf_link__destroy(link);
> +
> +cleanup:
> + kprobe_multi_empty__destroy(skel);
> + if (syms) {
> + for (i = 0; i < cnt; i++)
> + free(syms[i]);
> + free(syms);
> + }
> +}
> +
> void serial_test_kprobe_multi_bench_attach(void)
> {
> if (test__start_subtest("kernel"))
> @@ -550,4 +687,6 @@ void test_kprobe_multi_test(void)
> test_attach_api_fails();
> if (test__start_subtest("attach_override"))
> test_attach_override();
> + if (test__start_subtest("kernel_addrs_to_sym"))
> + test_attach_kernel_addrs_to_sym();
we moved the bench subtests to serial_test_kprobe_multi_bench_attach,
not to clash with others in parallel mode
jirka
next prev parent reply other threads:[~2024-03-22 12:26 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-21 20:00 [PATCH bpf-next v2 0/5] bpf: Fix a couple of test failures with LTO kernel Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 1/5] selftests/bpf: Replace CHECK with ASSERT macros for ksyms test Yonghong Song
2024-03-22 12:38 ` Jiri Olsa
2024-03-22 16:13 ` Andrii Nakryiko
2024-03-22 16:41 ` Yonghong Song
2024-03-22 16:48 ` Andrii Nakryiko
2024-03-22 17:28 ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 2/5] libbpf: Mark libbpf_kallsyms_parse static function Yonghong Song
2024-03-22 12:37 ` Jiri Olsa
2024-03-22 15:37 ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 3/5] libbpf: Handle <orig_name>.llvm.<hash> symbol properly Yonghong Song
2024-03-21 21:54 ` Alexei Starovoitov
2024-03-21 23:55 ` Yonghong Song
2024-03-22 0:02 ` Alexei Starovoitov
2024-03-22 0:17 ` Andrii Nakryiko
2024-03-22 0:32 ` Yonghong Song
2024-03-22 0:18 ` Andrii Nakryiko
2024-03-22 0:34 ` Yonghong Song
2024-03-22 21:50 ` Andrii Nakryiko
2024-03-22 22:09 ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 4/5] selftests/bpf: Fix kprobe_multi_bench_attach test failure with LTO kernel Yonghong Song
2024-03-22 12:37 ` Jiri Olsa
2024-03-22 16:01 ` Yonghong Song
2024-03-22 21:53 ` Andrii Nakryiko
2024-03-22 22:20 ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 5/5] selftests/bpf: Add a selftest with available_filter_functions_addrs Yonghong Song
2024-03-22 12:26 ` Jiri Olsa [this message]
2024-03-22 16:07 ` Yonghong Song
2024-03-22 21:58 ` Andrii Nakryiko
2024-03-22 22:23 ` Yonghong Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zf147sHXbgMs1yDZ@krava \
--to=olsajiri@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=martin.lau@kernel.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.