patch 'net/memif: fix some interrupt FD leaks' has been queued to stable release 24.11.9
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Nov 5 17:41:32 CET 2026
Hi,
FYI, your patch has been queued to stable release 24.11.9
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/07/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/17b84eff867779f02f990e8157878f425e00dc2d
Thanks.
Luca Boccassi
---
>From 17b84eff867779f02f990e8157878f425e00dc2d Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Wed, 21 Oct 2026 08:46:59 +0200
Subject: [PATCH] net/memif: fix some interrupt FD leaks
[ upstream commit 7281511c2cfaa379bc90bf266543f56e7007d55e ]
Fix several resource leaks in error handling and cleanup paths:
In memif_socket_create(), when rte_intr_callback_register() fails,
return via error path instead of returning directly, ensuring sockfd,
sock and intr_handle are properly cleaned up.
In memif_socket_init(), when rte_hash_add_key_data() fails, clean up
the newly created socket including unregistering callback, closing fd
and freeing intr_handle for listener sockets.
In memif_socket_remove_device(), unregister the listener callback and
close the socket fd before freeing the interrupt handle.
Fixes: 09c7e63a71f9 ("net/memif: introduce memory interface PMD")
Signed-off-by: David Marchand <david.marchand at redhat.com>
---
drivers/net/memif/memif_socket.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/memif/memif_socket.c b/drivers/net/memif/memif_socket.c
index 8231a936e52..475442231fd 100644
--- a/drivers/net/memif/memif_socket.c
+++ b/drivers/net/memif/memif_socket.c
@@ -1057,7 +1057,7 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract, uid_t owner_u
if (ret < 0) {
MIF_LOG(ERR, "Failed to register interrupt "
"callback for listener socket");
- return NULL;
+ goto error;
}
}
@@ -1121,6 +1121,14 @@ memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)
ret = rte_hash_add_key_data(hash, key, socket);
if (ret < 0) {
MIF_LOG(ERR, "Failed to add socket to socket hash.");
+ if (socket->listener) {
+ rte_intr_callback_unregister(socket->intr_handle,
+ memif_listener_handler, socket);
+ close(rte_intr_fd_get(socket->intr_handle));
+ rte_intr_fd_set(socket->intr_handle, -1);
+ rte_intr_instance_free(socket->intr_handle);
+ }
+ rte_free(socket);
return ret;
}
}
@@ -1186,8 +1194,13 @@ memif_socket_remove_device(struct rte_eth_dev *dev)
MIF_LOG(ERR, "Failed to remove socket file: %s",
socket->filename);
}
- if (pmd->role != MEMIF_ROLE_CLIENT)
+ if (pmd->role != MEMIF_ROLE_CLIENT) {
+ rte_intr_callback_unregister(socket->intr_handle, memif_listener_handler,
+ socket);
+ close(rte_intr_fd_get(socket->intr_handle));
+ rte_intr_fd_set(socket->intr_handle, -1);
rte_intr_instance_free(socket->intr_handle);
+ }
rte_free(socket);
}
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-11-05 16:42:45.253827479 +0000
+++ 0005-net-memif-fix-some-interrupt-FD-leaks.patch 2026-11-05 16:42:44.885059710 +0000
@@ -1 +1 @@
-From 7281511c2cfaa379bc90bf266543f56e7007d55e Mon Sep 17 00:00:00 2001
+From 17b84eff867779f02f990e8157878f425e00dc2d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7281511c2cfaa379bc90bf266543f56e7007d55e ]
+
@@ -20 +21,0 @@
-Cc: stable at dpdk.org
@@ -28 +29 @@
-index 2d16decbef..bd52a95473 100644
+index 8231a936e52..475442231fd 100644
@@ -31 +32 @@
-@@ -1051,7 +1051,7 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract, uid_t owner_u
+@@ -1057,7 +1057,7 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract, uid_t owner_u
@@ -40 +41 @@
-@@ -1115,6 +1115,14 @@ memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)
+@@ -1121,6 +1121,14 @@ memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)
@@ -55 +56 @@
-@@ -1180,8 +1188,13 @@ memif_socket_remove_device(struct rte_eth_dev *dev)
+@@ -1186,8 +1194,13 @@ memif_socket_remove_device(struct rte_eth_dev *dev)
More information about the stable
mailing list