@@ -8461,28 +8461,27 @@ int libbpf_find_vmlinux_btf_id(const char *name,
8461
8461
8462
8462
static int libbpf_find_prog_btf_id (const char * name , __u32 attach_prog_fd )
8463
8463
{
8464
- struct bpf_prog_info_linear * info_linear ;
8465
- struct bpf_prog_info * info ;
8464
+ struct bpf_prog_info info = {} ;
8465
+ __u32 info_len = sizeof ( info ) ;
8466
8466
struct btf * btf ;
8467
8467
int err ;
8468
8468
8469
- info_linear = bpf_program__get_prog_info_linear (attach_prog_fd , 0 );
8470
- err = libbpf_get_error (info_linear );
8469
+ err = bpf_obj_get_info_by_fd (attach_prog_fd , & info , & info_len );
8471
8470
if (err ) {
8472
- pr_warn ("failed get_prog_info_linear for FD %d\n" ,
8473
- attach_prog_fd );
8471
+ pr_warn ("failed bpf_obj_get_info_by_fd for FD %d: %d\n" ,
8472
+ attach_prog_fd , err );
8474
8473
return err ;
8475
8474
}
8476
8475
8477
8476
err = - EINVAL ;
8478
- info = & info_linear -> info ;
8479
- if (!info -> btf_id ) {
8477
+ if (!info .btf_id ) {
8480
8478
pr_warn ("The target program doesn't have BTF\n" );
8481
8479
goto out ;
8482
8480
}
8483
- btf = btf__load_from_kernel_by_id (info -> btf_id );
8484
- if (libbpf_get_error (btf )) {
8485
- pr_warn ("Failed to get BTF of the program\n" );
8481
+ btf = btf__load_from_kernel_by_id (info .btf_id );
8482
+ err = libbpf_get_error (btf );
8483
+ if (err ) {
8484
+ pr_warn ("Failed to get BTF %d of the program: %d\n" , info .btf_id , err );
8486
8485
goto out ;
8487
8486
}
8488
8487
err = btf__find_by_name_kind (btf , name , BTF_KIND_FUNC );
@@ -8492,7 +8491,6 @@ static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd)
8492
8491
goto out ;
8493
8492
}
8494
8493
out :
8495
- free (info_linear );
8496
8494
return err ;
8497
8495
}
8498
8496
0 commit comments