From: Jiri Olsa <jolsa@redhat.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org>,
lkml <linux-kernel@vger.kernel.org>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@chromium.org>,
Steven Rostedt <rostedt@goodmis.org>,
Jiri Olsa <olsajiri@gmail.com>
Subject: Re: [PATCH 8/8] selftest/bpf: Add fprobe test for bpf_cookie values
Date: Tue, 8 Feb 2022 10:15:56 +0100 [thread overview]
Message-ID: <YgI0zJDJ3jrb3q49@krava> (raw)
In-Reply-To: <CAEf4Bzbi3t_zZL2=8NyBeJ9q95ODH7pXF+EybtgBQp7LTyfr6Q@mail.gmail.com>
On Mon, Feb 07, 2022 at 10:59:32AM -0800, Andrii Nakryiko wrote:
> On Wed, Feb 2, 2022 at 5:54 AM Jiri Olsa <jolsa@redhat.com> wrote:
> >
> > Adding bpf_cookie test for kprobe attached by fprobe link.
> >
> > Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> > ---
> > .../selftests/bpf/prog_tests/bpf_cookie.c | 73 +++++++++++++++++++
> > .../selftests/bpf/progs/fprobe_bpf_cookie.c | 62 ++++++++++++++++
> > 2 files changed, 135 insertions(+)
> > create mode 100644 tools/testing/selftests/bpf/progs/fprobe_bpf_cookie.c
> >
> > diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > index cd10df6cd0fc..bf70d859c598 100644
> > --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > @@ -7,6 +7,7 @@
> > #include <unistd.h>
> > #include <test_progs.h>
> > #include "test_bpf_cookie.skel.h"
> > +#include "fprobe_bpf_cookie.skel.h"
> >
> > /* uprobe attach point */
> > static void trigger_func(void)
> > @@ -63,6 +64,76 @@ static void kprobe_subtest(struct test_bpf_cookie *skel)
> > bpf_link__destroy(retlink2);
> > }
> >
> > +static void fprobe_subtest(void)
> > +{
> > + DECLARE_LIBBPF_OPTS(bpf_link_create_opts, opts);
> > + int err, prog_fd, link1_fd = -1, link2_fd = -1;
> > + struct fprobe_bpf_cookie *skel = NULL;
> > + __u32 duration = 0, retval;
> > + __u64 addrs[8], cookies[8];
> > +
> > + skel = fprobe_bpf_cookie__open_and_load();
> > + if (!ASSERT_OK_PTR(skel, "fentry_raw_skel_load"))
> > + goto cleanup;
> > +
> > + kallsyms_find("bpf_fentry_test1", &addrs[0]);
> > + kallsyms_find("bpf_fentry_test2", &addrs[1]);
> > + kallsyms_find("bpf_fentry_test3", &addrs[2]);
> > + kallsyms_find("bpf_fentry_test4", &addrs[3]);
> > + kallsyms_find("bpf_fentry_test5", &addrs[4]);
> > + kallsyms_find("bpf_fentry_test6", &addrs[5]);
> > + kallsyms_find("bpf_fentry_test7", &addrs[6]);
> > + kallsyms_find("bpf_fentry_test8", &addrs[7]);
> > +
> > + cookies[0] = 1;
> > + cookies[1] = 2;
> > + cookies[2] = 3;
> > + cookies[3] = 4;
> > + cookies[4] = 5;
> > + cookies[5] = 6;
> > + cookies[6] = 7;
> > + cookies[7] = 8;
> > +
> > + opts.fprobe.addrs = (__u64) &addrs;
>
> we should have ptr_to_u64() for test_progs, but if not, let's either
> add it or it should be (__u64)(uintptr_t)&addrs. Otherwise we'll be
> getting compilation warnings on some architectures.
there's one in btf.c, bpf.c and libbpf.c ;-) so I guess it could go to bpf.h
>
> > + opts.fprobe.cnt = 8;
> > + opts.fprobe.bpf_cookies = (__u64) &cookies;
> > + prog_fd = bpf_program__fd(skel->progs.test2);
> > +
> > + link1_fd = bpf_link_create(prog_fd, 0, BPF_TRACE_FPROBE, &opts);
> > + if (!ASSERT_GE(link1_fd, 0, "link1_fd"))
> > + return;
> > +
> > + cookies[0] = 8;
> > + cookies[1] = 7;
> > + cookies[2] = 6;
> > + cookies[3] = 5;
> > + cookies[4] = 4;
> > + cookies[5] = 3;
> > + cookies[6] = 2;
> > + cookies[7] = 1;
> > +
> > + opts.flags = BPF_F_FPROBE_RETURN;
> > + prog_fd = bpf_program__fd(skel->progs.test3);
> > +
> > + link2_fd = bpf_link_create(prog_fd, 0, BPF_TRACE_FPROBE, &opts);
> > + if (!ASSERT_GE(link2_fd, 0, "link2_fd"))
> > + goto cleanup;
> > +
> > + prog_fd = bpf_program__fd(skel->progs.test1);
> > + err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
> > + NULL, NULL, &retval, &duration);
> > + ASSERT_OK(err, "test_run");
> > + ASSERT_EQ(retval, 0, "test_run");
> > +
> > + ASSERT_EQ(skel->bss->test2_result, 8, "test2_result");
> > + ASSERT_EQ(skel->bss->test3_result, 8, "test3_result");
> > +
> > +cleanup:
> > + close(link1_fd);
> > + close(link2_fd);
> > + fprobe_bpf_cookie__destroy(skel);
> > +}
> > +
> > static void uprobe_subtest(struct test_bpf_cookie *skel)
> > {
> > DECLARE_LIBBPF_OPTS(bpf_uprobe_opts, opts);
> > @@ -249,6 +320,8 @@ void test_bpf_cookie(void)
> >
> > if (test__start_subtest("kprobe"))
> > kprobe_subtest(skel);
> > + if (test__start_subtest("rawkprobe"))
>
> kprobe.multi?
yes
thanks,
jirka
next prev parent reply other threads:[~2022-02-08 9:16 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-02 13:53 [PATCH 0/8] bpf: Add fprobe link Jiri Olsa
2022-02-02 13:53 ` [PATCH 1/8] bpf: Add support to attach kprobe program with fprobe Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-08 8:56 ` Jiri Olsa
2022-02-02 13:53 ` [PATCH 2/8] bpf: Add bpf_get_func_ip kprobe helper for fprobe link Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-07 21:01 ` Alexei Starovoitov
2022-02-09 15:01 ` Jiri Olsa
2022-02-09 16:05 ` Andrii Nakryiko
2022-02-09 19:14 ` Jiri Olsa
2022-02-02 13:53 ` [PATCH 3/8] bpf: Add bpf_cookie support to fprobe Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-08 9:07 ` Jiri Olsa
2022-02-08 23:35 ` Andrii Nakryiko
2022-02-08 23:46 ` Jiri Olsa
2022-02-08 23:53 ` Andrii Nakryiko
2022-02-02 13:53 ` [PATCH 4/8] libbpf: Add libbpf__kallsyms_parse function Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-08 9:08 ` Jiri Olsa
2022-02-02 13:53 ` [PATCH 5/8] libbpf: Add bpf_link_create support for multi kprobes Jiri Olsa
2022-02-02 13:53 ` [PATCH 6/8] libbpf: Add bpf_program__attach_kprobe_opts " Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-08 9:12 ` Jiri Olsa
2022-02-02 13:53 ` [PATCH 7/8] selftest/bpf: Add fprobe attach test Jiri Olsa
2022-02-02 13:53 ` [PATCH 8/8] selftest/bpf: Add fprobe test for bpf_cookie values Jiri Olsa
2022-02-07 18:59 ` Andrii Nakryiko
2022-02-08 9:15 ` Jiri Olsa [this message]
2022-02-08 23:24 ` Andrii Nakryiko
2022-02-02 17:09 ` [PATCH 0/8] bpf: Add fprobe link Alexei Starovoitov
2022-02-02 17:24 ` Jiri Olsa
2022-02-02 17:30 ` Alexei Starovoitov
2022-02-03 15:06 ` Jiri Olsa
2022-02-04 0:46 ` Masami Hiramatsu
2022-02-04 1:34 ` Alexei Starovoitov
2022-02-04 2:07 ` Masami Hiramatsu
2022-02-04 2:12 ` Alexei Starovoitov
2022-02-04 2:19 ` Steven Rostedt
2022-02-04 2:42 ` Alexei Starovoitov
2022-02-04 3:17 ` Masami Hiramatsu
2022-02-04 3:59 ` Masami Hiramatsu
2022-02-15 13:21 ` Jiri Olsa
2022-02-16 18:27 ` Andrii Nakryiko
2022-02-17 14:03 ` Masami Hiramatsu
2022-02-17 22:01 ` Andrii Nakryiko
2022-02-18 4:07 ` Masami Hiramatsu
2022-02-18 19:46 ` Andrii Nakryiko
2022-02-19 2:10 ` Alexei Starovoitov
2022-02-21 7:18 ` Masami Hiramatsu
2022-02-22 12:42 ` Jiri Olsa
2022-02-04 3:14 ` Masami Hiramatsu
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=YgI0zJDJ3jrb3q49@krava \
--to=jolsa@redhat.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olsajiri@gmail.com \
--cc=rostedt@goodmis.org \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
/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.