All of lore.kernel.org
 help / color / mirror / Atom feed
From: Song Liu <song@kernel.org>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andriin@fb.com>,
	Networking <netdev@vger.kernel.org>, bpf <bpf@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>
Subject: Re: [PATCH bpf-next] selftest/bpf: Switch recursion test to use htab_map_delete_elem
Date: Mon, 4 Oct 2021 10:38:31 -0700	[thread overview]
Message-ID: <CAPhsuW5UBAvFx+Ndi2ycZiP0jOMAUVXLZsaS57zhgK+3+Ja-_A@mail.gmail.com> (raw)
In-Reply-To: <YVnfFTL/3T6jOwHI@krava>

On Sun, Oct 3, 2021 at 9:58 AM Jiri Olsa <jolsa@redhat.com> wrote:
>
> Currently the recursion test is hooking __htab_map_lookup_elem
> function, which is invoked both from bpf_prog and bpf syscall.
>
> But in our kernel build, the __htab_map_lookup_elem gets inlined
> within the htab_map_lookup_elem, so it's not trigered and the
> test fails.
>
> Fixing this by using htab_map_delete_elem, which is not inlined
> for bpf_prog calls (like htab_map_lookup_elem is) and is used
> directly as pointer for map_delete_elem, so it won't disappear
> by inlining.
>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>

Acked-by: Song Liu <songliubraving@fb.com>

> ---
>  tools/testing/selftests/bpf/prog_tests/recursion.c | 10 +++++-----
>  tools/testing/selftests/bpf/progs/recursion.c      |  9 +++------
>  2 files changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/recursion.c b/tools/testing/selftests/bpf/prog_tests/recursion.c
> index 0e378d63fe18..f3af2627b599 100644
> --- a/tools/testing/selftests/bpf/prog_tests/recursion.c
> +++ b/tools/testing/selftests/bpf/prog_tests/recursion.c
> @@ -20,18 +20,18 @@ void test_recursion(void)
>                 goto out;
>
>         ASSERT_EQ(skel->bss->pass1, 0, "pass1 == 0");
> -       bpf_map_lookup_elem(bpf_map__fd(skel->maps.hash1), &key, 0);
> +       bpf_map_delete_elem(bpf_map__fd(skel->maps.hash1), &key);
>         ASSERT_EQ(skel->bss->pass1, 1, "pass1 == 1");
> -       bpf_map_lookup_elem(bpf_map__fd(skel->maps.hash1), &key, 0);
> +       bpf_map_delete_elem(bpf_map__fd(skel->maps.hash1), &key);
>         ASSERT_EQ(skel->bss->pass1, 2, "pass1 == 2");
>
>         ASSERT_EQ(skel->bss->pass2, 0, "pass2 == 0");
> -       bpf_map_lookup_elem(bpf_map__fd(skel->maps.hash2), &key, 0);
> +       bpf_map_delete_elem(bpf_map__fd(skel->maps.hash2), &key);
>         ASSERT_EQ(skel->bss->pass2, 1, "pass2 == 1");
> -       bpf_map_lookup_elem(bpf_map__fd(skel->maps.hash2), &key, 0);
> +       bpf_map_delete_elem(bpf_map__fd(skel->maps.hash2), &key);
>         ASSERT_EQ(skel->bss->pass2, 2, "pass2 == 2");
>
> -       err = bpf_obj_get_info_by_fd(bpf_program__fd(skel->progs.on_lookup),
> +       err = bpf_obj_get_info_by_fd(bpf_program__fd(skel->progs.on_delete),
>                                      &prog_info, &prog_info_len);
>         if (!ASSERT_OK(err, "get_prog_info"))
>                 goto out;
> diff --git a/tools/testing/selftests/bpf/progs/recursion.c b/tools/testing/selftests/bpf/progs/recursion.c
> index 49f679375b9d..3c2423bb19e2 100644
> --- a/tools/testing/selftests/bpf/progs/recursion.c
> +++ b/tools/testing/selftests/bpf/progs/recursion.c
> @@ -24,8 +24,8 @@ struct {
>  int pass1 = 0;
>  int pass2 = 0;
>
> -SEC("fentry/__htab_map_lookup_elem")
> -int BPF_PROG(on_lookup, struct bpf_map *map)
> +SEC("fentry/htab_map_delete_elem")
> +int BPF_PROG(on_delete, struct bpf_map *map)
>  {
>         int key = 0;
>
> @@ -35,10 +35,7 @@ int BPF_PROG(on_lookup, struct bpf_map *map)
>         }
>         if (map == (void *)&hash2) {
>                 pass2++;
> -               /* htab_map_gen_lookup() will inline below call
> -                * into direct call to __htab_map_lookup_elem()
> -                */
> -               bpf_map_lookup_elem(&hash2, &key);
> +               bpf_map_delete_elem(&hash2, &key);
>                 return 0;
>         }
>
> --
> 2.31.1
>

  reply	other threads:[~2021-10-04 17:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-03 16:49 [PATCH bpf-next] selftest/bpf: Switch recursion test to use htab_map_delete_elem Jiri Olsa
2021-10-04 17:38 ` Song Liu [this message]
2021-10-06 17:20 ` patchwork-bot+netdevbpf

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=CAPhsuW5UBAvFx+Ndi2ycZiP0jOMAUVXLZsaS57zhgK+3+Ja-_A@mail.gmail.com \
    --to=song@kernel.org \
    --cc=andriin@fb.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=kafai@fb.com \
    --cc=kpsingh@chromium.org \
    --cc=netdev@vger.kernel.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.