commit:     9cc05971105585d9bcd9193b4373f3f806c3cb06
Author:     Holger Hoffstätte <holger <AT> applied-asynchrony <DOT> com>
AuthorDate: Wed Nov 22 11:52:46 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov 22 12:02:14 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9cc05971

net-libs/xdp-tools: add fix for memory leak in libxdp

Signed-off-by: Holger Hoffstätte <holger <AT> applied-asynchrony.com>
Closes: https://github.com/gentoo/gentoo/pull/33647
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...4.1-fix-memory-leak-in-xsk_setup_xdp_prog.patch | 34 ++++++++++++++++++++++
 ...ools-1.4.1.ebuild => xdp-tools-1.4.1-r1.ebuild} |  5 ++--
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git 
a/net-libs/xdp-tools/files/1.4.1-fix-memory-leak-in-xsk_setup_xdp_prog.patch 
b/net-libs/xdp-tools/files/1.4.1-fix-memory-leak-in-xsk_setup_xdp_prog.patch
new file mode 100644
index 000000000000..6c95a970f876
--- /dev/null
+++ b/net-libs/xdp-tools/files/1.4.1-fix-memory-leak-in-xsk_setup_xdp_prog.patch
@@ -0,0 +1,34 @@
+
+Patch from:
+https://github.com/xdp-project/xdp-tools/commit/cae9c91353cd3ed51753168203ed101905b9ac9e
+
+From cae9c91353cd3ed51753168203ed101905b9ac9e Mon Sep 17 00:00:00 2001
+From: Ric Li <ming3...@intel.com>
+Date: Tue, 21 Nov 2023 15:36:57 +0800
+Subject: [PATCH] libxdp: Fix xdp prog memory leak in xsk_setup_xdp_prog
+
+In the xsk_setup_xdp_prog function, the xsk structure
+temporarily takes ownership of an xdp_prog and stores it in
+ctx->xdp_prog. However, the allocated memory is not freed
+in xsk_destroy_xsk_struct, leading to a memory leak. This
+commit addresses the issue by adding a call to
+xdp_program_close to properly release the allocated
+xdp_prog memory.
+
+Signed-off-by: Ric Li <ming3...@intel.com>
+---
+ lib/libxdp/xsk.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/libxdp/xsk.c b/lib/libxdp/xsk.c
+index a854f771..b3527fb6 100644
+--- a/lib/libxdp/xsk.c
++++ b/lib/libxdp/xsk.c
+@@ -978,6 +978,7 @@ static struct xsk_ctx *xsk_create_ctx(struct xsk_socket 
*xsk,
+ 
+ static void xsk_destroy_xsk_struct(struct xsk_socket *xsk)
+ {
++      xdp_program__close(xsk->ctx->xdp_prog);
+       free(xsk->ctx);
+       free(xsk);
+ }

diff --git a/net-libs/xdp-tools/xdp-tools-1.4.1.ebuild 
b/net-libs/xdp-tools/xdp-tools-1.4.1-r1.ebuild
similarity index 92%
rename from net-libs/xdp-tools/xdp-tools-1.4.1.ebuild
rename to net-libs/xdp-tools/xdp-tools-1.4.1-r1.ebuild
index 520357d07664..a56fcf10ba5b 100644
--- a/net-libs/xdp-tools/xdp-tools-1.4.1.ebuild
+++ b/net-libs/xdp-tools/xdp-tools-1.4.1-r1.ebuild
@@ -33,13 +33,14 @@ QA_PREBUILT="usr/lib/bpf/*.o"
 MAKEOPTS+=" V=1"
 
 PATCHES=(
+       "${FILESDIR}"/1.4.1-fix-memory-leak-in-xsk_setup_xdp_prog.patch
 )
 
 src_prepare() {
        # remove -Werror: #899744
-       sed -i 's/-Werror//g' lib/Makefile lib/defines.mk
+       sed -i 's/-Werror//g' lib/Makefile lib/defines.mk || die
        sed -i '/-Werror/d' lib/common.mk lib/libxdp/Makefile \
-               lib/libxdp/tests/Makefile lib/util/Makefile
+               lib/libxdp/tests/Makefile lib/util/Makefile || die
 
        default
 }

Reply via email to