[v4,1/5] bpf: add allocation annotations to functions
Checks
Commit Message
In commit 80da7efbb4c4 ("eal: annotate allocation functions")
helper macros were added to provide compiler information to
detect misuse of alloc/free combinations. This covered many
of the functions in DPDK but missed the case of data allocated
by BPF load functions.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
lib/bpf/rte_bpf.h | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
Comments
> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Tuesday 4 November 2025 16:07
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Konstantin Ananyev <konstantin.ananyev@huawei.com>
> Subject: [PATCH v4 1/5] bpf: add allocation annotations to functions
>
> In commit 80da7efbb4c4 ("eal: annotate allocation functions")
> helper macros were added to provide compiler information to
> detect misuse of alloc/free combinations. This covered many
> of the functions in DPDK but missed the case of data allocated
> by BPF load functions.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
> ---
> lib/bpf/rte_bpf.h | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
> index 80ebb0210f..309d84bc51 100644
> --- a/lib/bpf/rte_bpf.h
> +++ b/lib/bpf/rte_bpf.h
> @@ -18,6 +18,7 @@
>
> #include <rte_common.h>
> #include <rte_mbuf.h>
> +#include <rte_malloc.h>
> #include <bpf_def.h>
>
> #ifdef __cplusplus
> @@ -128,7 +129,8 @@ rte_bpf_destroy(struct rte_bpf *bpf);
> * - ENOMEM - can't reserve enough memory
> */
> struct rte_bpf *
> -rte_bpf_load(const struct rte_bpf_prm *prm);
> +rte_bpf_load(const struct rte_bpf_prm *prm)
> + __rte_malloc __rte_dealloc(rte_bpf_destroy, 1);
>
> /**
> * Create a new eBPF execution context and load BPF code from given ELF
> @@ -152,7 +154,9 @@ rte_bpf_load(const struct rte_bpf_prm *prm);
> */
> struct rte_bpf *
> rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,
> - const char *sname);
> + const char *sname)
> + __rte_malloc __rte_dealloc(rte_bpf_destroy, 1);
> +
> /**
> * Execute given BPF bytecode.
> *
> @@ -228,7 +232,8 @@ struct bpf_program;
> * - ENOTSUP - operation not supported
> */
> struct rte_bpf_prm *
> -rte_bpf_convert(const struct bpf_program *prog);
> +rte_bpf_convert(const struct bpf_program *prog)
> + __rte_malloc __rte_dealloc_free;
>
> #ifdef __cplusplus
> }
> --
> 2.51.0
Reviewed-by: Marat Khalili <marat.khalili@huawei.com>
@@ -18,6 +18,7 @@
#include <rte_common.h>
#include <rte_mbuf.h>
+#include <rte_malloc.h>
#include <bpf_def.h>
#ifdef __cplusplus
@@ -128,7 +129,8 @@ rte_bpf_destroy(struct rte_bpf *bpf);
* - ENOMEM - can't reserve enough memory
*/
struct rte_bpf *
-rte_bpf_load(const struct rte_bpf_prm *prm);
+rte_bpf_load(const struct rte_bpf_prm *prm)
+ __rte_malloc __rte_dealloc(rte_bpf_destroy, 1);
/**
* Create a new eBPF execution context and load BPF code from given ELF
@@ -152,7 +154,9 @@ rte_bpf_load(const struct rte_bpf_prm *prm);
*/
struct rte_bpf *
rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,
- const char *sname);
+ const char *sname)
+ __rte_malloc __rte_dealloc(rte_bpf_destroy, 1);
+
/**
* Execute given BPF bytecode.
*
@@ -228,7 +232,8 @@ struct bpf_program;
* - ENOTSUP - operation not supported
*/
struct rte_bpf_prm *
-rte_bpf_convert(const struct bpf_program *prog);
+rte_bpf_convert(const struct bpf_program *prog)
+ __rte_malloc __rte_dealloc_free;
#ifdef __cplusplus
}