Message ID | 20220512234332.2852918-1-deso@posteo.net (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places | expand |
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 >
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
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 */
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(-)