patch 'eal/linux: fix closing of event FDs not owned by EAL' has been queued to stable release 24.11.9
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Nov 5 17:41:33 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/d4e82be360b9301cf5eeec92ce5cdbc4787b8a95
Thanks.
Luca Boccassi
---
>From d4e82be360b9301cf5eeec92ce5cdbc4787b8a95 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov at intel.com>
Date: Fri, 23 Oct 2026 14:51:33 +0100
Subject: [PATCH] eal/linux: fix closing of event FDs not owned by EAL
[ upstream commit 8f5abe56d246c249d8217126c11c16d0f786077a ]
rte_intr_efd_disable() decides whether to close the event FDs based on
max_intr being greater than nb_efd. This is a side effect of how
rte_intr_efd_enable() fills the handle for VFIO MSI-X, where an extra
slot is reserved for the misc interrupt, and only indirectly identifies
the eventfds that EAL created itself.
Any driver filling the event FD array for a VDEV or EXT handle and
setting max_intr the same way gets its descriptors closed by EAL even
though it owns them. The virtio-user driver does exactly this, so its
callfds are closed by rte_intr_efd_disable() and then closed again by
the driver on uninit.
Check the interrupt handle type instead, so that only the eventfds
created by rte_intr_efd_enable() for VFIO MSI-X are closed.
Fixes: b9e0662a931d ("eal/linux: add interrupt API for drivers")
Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
Acked-by: David Marchand <david.marchand at redhat.com>
---
lib/eal/linux/eal_interrupts.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/eal/linux/eal_interrupts.c b/lib/eal/linux/eal_interrupts.c
index 1f3f3572279..abb717257c3 100644
--- a/lib/eal/linux/eal_interrupts.c
+++ b/lib/eal/linux/eal_interrupts.c
@@ -1606,7 +1606,11 @@ rte_intr_efd_disable(struct rte_intr_handle *intr_handle)
uint32_t i;
rte_intr_free_epoll_fd(intr_handle);
- if (rte_intr_max_intr_get(intr_handle) > rte_intr_nb_efd_get(intr_handle)) {
+ /* Only eventfds created by rte_intr_efd_enable() for MSI-X are owned
+ * by the handle. In other modes the entries reference fds owned by
+ * the device or the driver and must not be closed here.
+ */
+ if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_VFIO_MSIX) {
for (i = 0; i < (uint32_t)rte_intr_nb_efd_get(intr_handle); i++)
close(rte_intr_efds_index_get(intr_handle, i));
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-11-05 16:42:45.288867646 +0000
+++ 0006-eal-linux-fix-closing-of-event-FDs-not-owned-by-EAL.patch 2026-11-05 16:42:44.885059710 +0000
@@ -1 +1 @@
-From 8f5abe56d246c249d8217126c11c16d0f786077a Mon Sep 17 00:00:00 2001
+From d4e82be360b9301cf5eeec92ce5cdbc4787b8a95 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8f5abe56d246c249d8217126c11c16d0f786077a ]
+
@@ -22 +23,0 @@
-Cc: stable at dpdk.org
@@ -31 +32 @@
-index dcc2c0efdb..fa658f5a3c 100644
+index 1f3f3572279..abb717257c3 100644
@@ -34 +35 @@
-@@ -1607,7 +1607,11 @@ rte_intr_efd_disable(struct rte_intr_handle *intr_handle)
+@@ -1606,7 +1606,11 @@ rte_intr_efd_disable(struct rte_intr_handle *intr_handle)
More information about the stable
mailing list