All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places
@ 2022-05-12 23:43 Daniel Müller
  2022-05-13  0:08 ` Andrii Nakryiko
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Müller @ 2022-05-12 23:43 UTC (permalink / raw)
  To: bpf, ast, andrii, daniel, kernel-team

Two of the BPF selftests hardcode the path to /sys/kernel/btf/vmlinux.
The kernel image could potentially exist at a different location.
libbpf_find_kernel_btf(), as introduced by commit fb2426ad00b1 ("libbpf:
Expose bpf_find_kernel_btf as a LIBBPF_API"), knows about said
locations.

This change switches these two tests over to using this function
instead, making the tests more likely to be runnable when
/sys/kernel/btf/vmlinux may not be present and setting better precedent.

Signed-off-by: Daniel Müller <deso@posteo.net>
---
 tools/testing/selftests/bpf/prog_tests/libbpf_probes.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
index 9f766dd..61c81a9 100644
--- a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
+++ b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
@@ -11,8 +11,8 @@ void test_libbpf_probe_prog_types(void)
 	const struct btf_enum *e;
 	int i, n, id;
 
-	btf = btf__parse("/sys/kernel/btf/vmlinux", NULL);
-	if (!ASSERT_OK_PTR(btf, "btf_parse"))
+	btf = libbpf_find_kernel_btf();
+	if (!ASSERT_OK_PTR(btf, "libbpf_find_kernel_btf"))
 		return;
 
 	/* find enum bpf_prog_type and enumerate each value */
@@ -49,8 +49,8 @@ void test_libbpf_probe_map_types(void)
 	const struct btf_enum *e;
 	int i, n, id;
 
-	btf = btf__parse("/sys/kernel/btf/vmlinux", NULL);
-	if (!ASSERT_OK_PTR(btf, "btf_parse"))
+	btf = libbpf_find_kernel_btf();
+	if (!ASSERT_OK_PTR(btf, "libbpf_find_kernel_btf"))
 		return;
 
 	/* find enum bpf_map_type and enumerate each value */
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places
  2022-05-12 23:43 [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places Daniel Müller
@ 2022-05-13  0:08 ` Andrii Nakryiko
  2022-05-13  0:45   ` Daniel Müller
  0 siblings, 1 reply; 3+ messages in thread
From: Andrii Nakryiko @ 2022-05-13  0:08 UTC (permalink / raw)
  To: Daniel Müller
  Cc: bpf, Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann, Kernel Team

On Thu, May 12, 2022 at 4:44 PM Daniel Müller <deso@posteo.net> wrote:
>
> Two of the BPF selftests hardcode the path to /sys/kernel/btf/vmlinux.
> The kernel image could potentially exist at a different location.
> libbpf_find_kernel_btf(), as introduced by commit fb2426ad00b1 ("libbpf:
> Expose bpf_find_kernel_btf as a LIBBPF_API"), knows about said
> locations.
>
> This change switches these two tests over to using this function
> instead, making the tests more likely to be runnable when
> /sys/kernel/btf/vmlinux may not be present and setting better precedent.
>
> Signed-off-by: Daniel Müller <deso@posteo.net>
> ---
>  tools/testing/selftests/bpf/prog_tests/libbpf_probes.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> index 9f766dd..61c81a9 100644
> --- a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> +++ b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> @@ -11,8 +11,8 @@ void test_libbpf_probe_prog_types(void)
>         const struct btf_enum *e;
>         int i, n, id;
>
> -       btf = btf__parse("/sys/kernel/btf/vmlinux", NULL);

Selftests go hand in hand with kernel and generally assume specific
kernel features enabled (like BTF and sysfs) and having very recent
(if not latest) kernel. So there is nothing bad about loading
/sys/kernel/btf/vmlinux, I think, it's actually more straightforward
to follow the code when it is used explicitly. Libbpf's logic for
finding kernel BTF in other places is for older systems. So I'd leave
it as is.

> -       if (!ASSERT_OK_PTR(btf, "btf_parse"))
> +       btf = libbpf_find_kernel_btf();
> +       if (!ASSERT_OK_PTR(btf, "libbpf_find_kernel_btf"))
>                 return;
>
>         /* find enum bpf_prog_type and enumerate each value */
> @@ -49,8 +49,8 @@ void test_libbpf_probe_map_types(void)
>         const struct btf_enum *e;
>         int i, n, id;
>
> -       btf = btf__parse("/sys/kernel/btf/vmlinux", NULL);
> -       if (!ASSERT_OK_PTR(btf, "btf_parse"))
> +       btf = libbpf_find_kernel_btf();
> +       if (!ASSERT_OK_PTR(btf, "libbpf_find_kernel_btf"))
>                 return;
>
>         /* find enum bpf_map_type and enumerate each value */
> --
> 2.30.2
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places
  2022-05-13  0:08 ` Andrii Nakryiko
@ 2022-05-13  0:45   ` Daniel Müller
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Müller @ 2022-05-13  0:45 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: bpf, Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann, Kernel Team

On Thu, May 12, 2022 at 05:08:29PM -0700, Andrii Nakryiko wrote:
> On Thu, May 12, 2022 at 4:44 PM Daniel Müller <deso@posteo.net> wrote:
> >
> > Two of the BPF selftests hardcode the path to /sys/kernel/btf/vmlinux.
> > The kernel image could potentially exist at a different location.
> > libbpf_find_kernel_btf(), as introduced by commit fb2426ad00b1 ("libbpf:
> > Expose bpf_find_kernel_btf as a LIBBPF_API"), knows about said
> > locations.
> >
> > This change switches these two tests over to using this function
> > instead, making the tests more likely to be runnable when
> > /sys/kernel/btf/vmlinux may not be present and setting better precedent.
> >
> > Signed-off-by: Daniel Müller <deso@posteo.net>
> > ---
> >  tools/testing/selftests/bpf/prog_tests/libbpf_probes.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> > index 9f766dd..61c81a9 100644
> > --- a/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> > +++ b/tools/testing/selftests/bpf/prog_tests/libbpf_probes.c
> > @@ -11,8 +11,8 @@ void test_libbpf_probe_prog_types(void)
> >         const struct btf_enum *e;
> >         int i, n, id;
> >
> > -       btf = btf__parse("/sys/kernel/btf/vmlinux", NULL);
> 
> Selftests go hand in hand with kernel and generally assume specific
> kernel features enabled (like BTF and sysfs) and having very recent
> (if not latest) kernel. So there is nothing bad about loading
> /sys/kernel/btf/vmlinux, I think, it's actually more straightforward
> to follow the code when it is used explicitly. Libbpf's logic for
> finding kernel BTF in other places is for older systems. So I'd leave
> it as is.

Sounds good to me. Feel free to ignore the patch then.

Daniel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-05-13  0:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-12 23:43 [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places Daniel Müller
2022-05-13  0:08 ` Andrii Nakryiko
2022-05-13  0:45   ` Daniel Müller

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.