Re: [PATCH bpf-next] selftests/bpf: Hardcode /sys/kernel/btf/vmlinux in fewer places

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 12, 2022 at 4:44 PM Daniel Müller <deso@xxxxxxxxxx> 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@xxxxxxxxxx>
> ---
>  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
>




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux