lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAEf4BzaYuX5V65Ty=RXnQeZV_DegNrFTM-dtRQPHdv4i2k0s4A@mail.gmail.com>
Date: Mon, 13 Oct 2025 17:10:34 -0700
From: Andrii Nakryiko <andrii.nakryiko@...il.com>
To: Amery Hung <ameryhung@...il.com>
Cc: bpf@...r.kernel.org, netdev@...r.kernel.org, alexei.starovoitov@...il.com, 
	andrii@...nel.org, daniel@...earbox.net, tj@...nel.org, martin.lau@...nel.org, 
	kernel-team@...a.com
Subject: Re: [RFC PATCH v1 bpf-next 3/4] libbpf: Add bpf_struct_ops_associate_prog()
 API

On Fri, Oct 10, 2025 at 10:50 AM Amery Hung <ameryhung@...il.com> wrote:
>
> Add low-level wrapper API for BPF_STRUCT_OPS_ASSOCIATE_PROG command in
> bpf() syscall.
>
> Signed-off-by: Amery Hung <ameryhung@...il.com>
> ---
>  tools/lib/bpf/bpf.c      | 18 ++++++++++++++++++
>  tools/lib/bpf/bpf.h      | 19 +++++++++++++++++++
>  tools/lib/bpf/libbpf.map |  1 +
>  3 files changed, 38 insertions(+)
>
> diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
> index 339b19797237..230fc2fa98f9 100644
> --- a/tools/lib/bpf/bpf.c
> +++ b/tools/lib/bpf/bpf.c
> @@ -1397,3 +1397,21 @@ int bpf_prog_stream_read(int prog_fd, __u32 stream_id, void *buf, __u32 buf_len,
>         err = sys_bpf(BPF_PROG_STREAM_READ_BY_FD, &attr, attr_sz);
>         return libbpf_err_errno(err);
>  }
> +
> +int bpf_struct_ops_associate_prog(int map_fd, int prog_fd,
> +                                 struct bpf_struct_ops_associate_prog_opts *opts)
> +{
> +       const size_t attr_sz = offsetofend(union bpf_attr, struct_ops_assoc_prog);
> +       union bpf_attr attr;
> +       int err;
> +
> +       if (!OPTS_VALID(opts, bpf_struct_ops_associate_prog_opts))
> +               return libbpf_err(-EINVAL);
> +
> +       memset(&attr, 0, attr_sz);
> +       attr.struct_ops_assoc_prog.map_fd = map_fd;
> +       attr.struct_ops_assoc_prog.prog_fd = prog_fd;
> +
> +       err = sys_bpf(BPF_STRUCT_OPS_ASSOCIATE_PROG, &attr, attr_sz);
> +       return libbpf_err_errno(err);
> +}
> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> index e983a3e40d61..99fe189ca7c6 100644
> --- a/tools/lib/bpf/bpf.h
> +++ b/tools/lib/bpf/bpf.h
> @@ -733,6 +733,25 @@ struct bpf_prog_stream_read_opts {
>  LIBBPF_API int bpf_prog_stream_read(int prog_fd, __u32 stream_id, void *buf, __u32 buf_len,
>                                     struct bpf_prog_stream_read_opts *opts);
>
> +struct bpf_struct_ops_associate_prog_opts {
> +       size_t sz;

there will be flags, justifying this struct :)


> +       size_t :0;
> +};
> +#define bpf_struct_ops_associate_prog_opts__last_field sz
> +/**
> + * @brief **bpf_struct_ops_associate_prog** associate a BPF program with a
> + * struct_ops map.
> + *
> + * @param map_fd FD for the struct_ops map to be associated with a BPF progam
> + * @param prog_fd FD for the BPF program
> + * @param opts optional options, can be NULL
> + *
> + * @return 0 on success; negative error code, otherwise (errno is also set to
> + * the error code)
> + */
> +LIBBPF_API int bpf_struct_ops_associate_prog(int map_fd, int prog_fd,
> +                                            struct bpf_struct_ops_associate_prog_opts *opts);
> +
>  #ifdef __cplusplus
>  } /* extern "C" */
>  #endif
> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
> index 8ed8749907d4..3a156a663210 100644
> --- a/tools/lib/bpf/libbpf.map
> +++ b/tools/lib/bpf/libbpf.map
> @@ -451,4 +451,5 @@ LIBBPF_1.7.0 {
>         global:
>                 bpf_map__set_exclusive_program;
>                 bpf_map__exclusive_program;
> +               bpf_struct_ops_associate_prog;
>  } LIBBPF_1.6.0;
> --
> 2.47.3
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ