patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>
Cc: David Marchand <david.marchand@redhat.com>,
	Chenbo Xia <chenbox@nvidia.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'vhost: fix FD entries cleanup' has been queued to stable release 24.11.2
Date: Thu, 13 Feb 2025 09:58:26 +0000	[thread overview]
Message-ID: <20250213095933.362078-59-ktraynor@redhat.com> (raw)
In-Reply-To: <20250213095933.362078-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 24.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/17/25. 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/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/17320be508658dba6e61ab78b3154c85749464fe

Thanks.

Kevin

---
From 17320be508658dba6e61ab78b3154c85749464fe Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Thu, 6 Feb 2025 09:41:54 +0100
Subject: [PATCH] vhost: fix FD entries cleanup

[ upstream commit 50966930caf2d1a82655f2c3415c093421d70072 ]

With the recent rework of the FD manager to use epoll,
an error message is emitted with Vhost-user at FD entry
removal:

ERR|VHOST_FDMAN: could not remove 102 fd from 101 epfd: No such file or directory

It occurs because the read callback closes the file
descriptor before it is removed from the FD set.
This patch defers the close() after the FD entry is removed
from the set.

Fixes: 0e38b42bf61c ("vhost: manage FD with epoll")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbox@nvidia.com>
---
 lib/vhost/fd_man.c | 12 +++++++-----
 lib/vhost/fd_man.h |  2 +-
 lib/vhost/socket.c | 11 +++++------
 lib/vhost/vduse.c  |  9 ++++-----
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/lib/vhost/fd_man.c b/lib/vhost/fd_man.c
index 9bc7e50b93..f9147edee7 100644
--- a/lib/vhost/fd_man.c
+++ b/lib/vhost/fd_man.c
@@ -334,5 +334,5 @@ fdset_event_dispatch(void *arg)
 	void *dat;
 	int fd, numfds;
-	int remove1, remove2;
+	int close1, close2;
 	struct fdset *pfdset = arg;
 
@@ -358,5 +358,5 @@ fdset_event_dispatch(void *arg)
 			}
 
-			remove1 = remove2 = 0;
+			close1 = close2 = 0;
 
 			rcb = pfdentry->rcb;
@@ -368,7 +368,7 @@ fdset_event_dispatch(void *arg)
 
 			if (rcb && events[i].events & (EPOLLIN | EPOLLERR | EPOLLHUP))
-				rcb(fd, dat, &remove1);
+				rcb(fd, dat, &close1);
 			if (wcb && events[i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP))
-				wcb(fd, dat, &remove2);
+				wcb(fd, dat, &close2);
 			pfdentry->busy = 0;
 			/*
@@ -382,6 +382,8 @@ fdset_event_dispatch(void *arg)
 			 * fdset_del_locked().
 			 */
-			if (remove1 || remove2)
+			if (close1 || close2) {
 				fdset_del(pfdset, fd);
+				close(fd);
+			}
 		}
 
diff --git a/lib/vhost/fd_man.h b/lib/vhost/fd_man.h
index 6398343a6a..eadcc6fb42 100644
--- a/lib/vhost/fd_man.h
+++ b/lib/vhost/fd_man.h
@@ -13,5 +13,5 @@ struct fdset;
 #define MAX_FDS 1024
 
-typedef void (*fd_cb)(int fd, void *dat, int *remove);
+typedef void (*fd_cb)(int fd, void *dat, int *close);
 
 struct fdset *fdset_init(const char *name);
diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c
index 05a7e5902f..799c6b0590 100644
--- a/lib/vhost/socket.c
+++ b/lib/vhost/socket.c
@@ -85,6 +85,6 @@ struct vhost_user {
 #define MAX_VIRTIO_BACKLOG 128
 
-static void vhost_user_server_new_connection(int fd, void *data, int *remove);
-static void vhost_user_read_cb(int fd, void *dat, int *remove);
+static void vhost_user_server_new_connection(int fd, void *data, int *close);
+static void vhost_user_read_cb(int fd, void *dat, int *close);
 static int create_unix_socket(struct vhost_user_socket *vsocket);
 static int vhost_user_start_client(struct vhost_user_socket *vsocket);
@@ -291,5 +291,5 @@ err:
 /* call back when there is new vhost-user connection from client  */
 static void
-vhost_user_server_new_connection(int fd, void *dat, int *remove __rte_unused)
+vhost_user_server_new_connection(int fd, void *dat, int *close __rte_unused)
 {
 	struct vhost_user_socket *vsocket = dat;
@@ -304,5 +304,5 @@ vhost_user_server_new_connection(int fd, void *dat, int *remove __rte_unused)
 
 static void
-vhost_user_read_cb(int connfd, void *dat, int *remove)
+vhost_user_read_cb(int connfd, void *dat, int *close)
 {
 	struct vhost_user_connection *conn = dat;
@@ -314,6 +314,5 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)
 		struct virtio_net *dev = get_device(conn->vid);
 
-		close(connfd);
-		*remove = 1;
+		*close = 1;
 
 		if (dev)
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index be548f051e..801674be42 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -118,5 +118,5 @@ static struct vhost_backend_ops vduse_backend_ops = {
 
 static void
-vduse_control_queue_event(int fd, void *arg, int *remove __rte_unused)
+vduse_control_queue_event(int fd, void *arg, int *close __rte_unused)
 {
 	struct virtio_net *dev = arg;
@@ -352,5 +352,5 @@ vduse_device_stop(struct virtio_net *dev)
 
 static void
-vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
+vduse_events_handler(int fd, void *arg, int *close __rte_unused)
 {
 	struct virtio_net *dev = arg;
@@ -565,5 +565,5 @@ vduse_reconnect_log_check(struct virtio_net *dev, uint64_t features, uint32_t to
 
 static void
-vduse_reconnect_handler(int fd, void *arg, int *remove)
+vduse_reconnect_handler(int fd __rte_unused, void *arg, int *close)
 {
 	struct virtio_net *dev = arg;
@@ -571,6 +571,5 @@ vduse_reconnect_handler(int fd, void *arg, int *remove)
 	vduse_device_start(dev, true);
 
-	close(fd);
-	*remove = 1;
+	*close = 1;
 }
 
-- 
2.48.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-02-12 17:29:40.812387807 +0000
+++ 0059-vhost-fix-FD-entries-cleanup.patch	2025-02-12 17:29:34.382946121 +0000
@@ -1 +1 @@
-From 50966930caf2d1a82655f2c3415c093421d70072 Mon Sep 17 00:00:00 2001
+From 17320be508658dba6e61ab78b3154c85749464fe Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 50966930caf2d1a82655f2c3415c093421d70072 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -80 +81 @@
-index 894a0f0dcb..4c6c551c3d 100644
+index 05a7e5902f..799c6b0590 100644


  parent reply	other threads:[~2025-02-13 10:02 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-13  9:57 patch 'log: fix double free on " Kevin Traynor
2025-02-13  9:57 ` patch 'test/ring: fix init with custom number of lcores' " Kevin Traynor
2025-02-13  9:57 ` patch 'vhost: clear ring addresses when getting vring base' " Kevin Traynor
2025-02-13  9:57 ` patch 'vhost: check GSO size validity' " Kevin Traynor
2025-02-13  9:57 ` patch 'vhost: fix log when setting max queue num' " Kevin Traynor
2025-02-13  9:57 ` patch 'vhost: reset packets count when not ready' " Kevin Traynor
2025-02-13  9:57 ` patch 'crypto/cnxk: fix build with GCC 15' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/thunderx/base: " Kevin Traynor
2025-02-13  9:57 ` patch 'examples/flow_filtering: " Kevin Traynor
2025-02-13  9:57 ` patch 'eal/x86: fix some intrinsics header include for Windows' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ena: fix missing default LLQ policy' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/nfp: fix VF link speed' " Kevin Traynor
2025-02-13  9:57 ` patch 'test/bonding: fix active backup receive test' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/bonding: fix dedicated queue setup' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/hns3: fix mbuf freeing in simple Tx path' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/hns3: remove PVID info dump for VF' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/hns3: rename RAS module' " Kevin Traynor
2025-02-13  9:57 ` patch 'examples/flow_filtering: remove duplicate assignment' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/sfc: remove unnecessary " Kevin Traynor
2025-02-13  9:57 ` patch 'net/mlx5: fix polling CQEs' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/mlx5: fix leak of flow action data list' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/mlx5: fix unneeded stub flow table allocation' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ixgbe: fix E610 support in flow engine' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ixgbe/base: fix TSAM checking return value' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ixgbe/base: remove 2.5/5G from auto-negotiation for E610' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ixgbe/base: fix driver hang in VM' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ixgbe/base: add missing buffer copy for ACI' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/iavf: remove reset of Tx prepare function pointer' " Kevin Traynor
2025-02-13  9:57 ` patch 'net/ice: fix memory leak in scalar Rx' " Kevin Traynor
2025-02-13  9:57 ` patch 'common/cnxk: fix atomic load in batch ops' " Kevin Traynor
2025-02-13  9:57 ` patch 'common/cnxk: fix DPI mailbox structure' " Kevin Traynor
2025-02-13  9:57 ` patch 'eventdev: fix format string data type in log messages' " Kevin Traynor
2025-02-13  9:58 ` patch 'crypto/virtio: fix redundant queue free' " Kevin Traynor
2025-02-13  9:58 ` patch 'crypto/openssl: fix CMAC auth context update' " Kevin Traynor
2025-02-13 15:18   ` Wathsala Wathawana Vithanage
2025-02-13  9:58 ` patch 'cryptodev: fix C++ include' " Kevin Traynor
2025-02-13  9:58 ` patch 'crypto/virtio: fix data queues iteration' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/octeon_ep: remove useless assignment' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/enetfec: " Kevin Traynor
2025-02-13  9:58 ` patch 'net/gve: allocate Rx QPL pages using malloc' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/nfp: fix multiple PFs check from NSP' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/nfp: fix misuse of function return values' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/nfp: fix multi-PF control flag' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/nfp: fix firmware load from flash' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/ice: fix flows handling' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/cnxk: fix NIX send header L3 type' " Kevin Traynor
2025-02-13  9:58 ` patch 'gro: fix unprocessed IPv4 packets' " Kevin Traynor
2025-02-13  9:58 ` patch 'log: fix systemd journal socket open' " Kevin Traynor
2025-02-13  9:58 ` patch 'eal/linux: fix memseg length in legacy mem init' " Kevin Traynor
2025-02-13  9:58 ` patch 'service: fix getting service lcore attributes' " Kevin Traynor
2025-02-13  9:58 ` patch 'ptr_compress: fix build with Arm SVE' " Kevin Traynor
2025-02-13  9:58 ` patch 'buildtools: fix some Python regex syntax warnings' " Kevin Traynor
2025-02-13  9:58 ` patch 'dts: fix MTU set command' " Kevin Traynor
2025-02-13  9:58 ` patch 'dts: fix pass rate edge case in results' " Kevin Traynor
2025-02-13  9:58 ` patch 'use Python raw string notation' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/af_packet: fix socket close on device stop' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mana: do not ring short doorbell for every mbuf alloc' " Kevin Traynor
2025-02-13  9:58 ` patch 'ethdev: fix functions available in new device event' " Kevin Traynor
2025-02-13  9:58 ` patch 'vhost: add null callback checks' " Kevin Traynor
2025-02-13  9:58 ` Kevin Traynor [this message]
2025-02-13  9:58 ` patch 'build: force GCC 15 to initialize padding bits' " Kevin Traynor
2025-02-13  9:58 ` patch 'random: defer seeding to EAL init' " Kevin Traynor
2025-02-13  9:58 ` patch 'power: defer lcore variable allocation' " Kevin Traynor
2025-02-13  9:58 ` patch 'eal/x86: defer power intrinsics " Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: fix indication of " Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: fix Rx handler' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: fix crash when representor is re-attached' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: fix dead code' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: fix overflow' " Kevin Traynor
2025-02-13  9:58 ` Kevin Traynor
2025-02-13  9:58 ` patch 'net/bnxt: address uninitialized variables' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mlx5: fix Netlink socket leak' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mlx5: adjust actions per rule limitation' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mlx5: fix crash in non-template metadata split' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mlx5: fix flush of non-template flow rules' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/mlx5: fix GRE flow match with SWS' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix deadlock when writing i225 register' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix infinite loop' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix bitwise operation type' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: increase PHY power up delay' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: reset loop variable' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix LTR for i225' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix typo in LTR calculation' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix unused value' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix semaphore timeout " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix iterator type' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix MAC address hash bit shift' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix data type in MAC hash' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/igc/base: fix NVM data type in bit shift' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/e1000/base: fix semaphore timeout value' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/e1000/base: correct mPHY access logic' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/e1000/base: fix iterator type' " Kevin Traynor
2025-02-13  9:58 ` patch 'net/e1000/base: fix MAC address hash bit shift' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix data type in MAC hash' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix uninitialized variable' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix bitwise operation type' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix NVM data type in bit shift' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix reset for 82580' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: fix unchecked return' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/e1000/base: skip management check for 82575' " Kevin Traynor
2025-02-13  9:59 ` patch 'common/idpf: fix void function returning a value' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/intel: fix void functions " Kevin Traynor
2025-02-13  9:59 ` patch 'net/intel: fix build with icx' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/hns3: fix copper port initialization' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/hns3: fix reset timeout' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/cpfl: fix representor parsing log' " Kevin Traynor
2025-02-13  9:59 ` patch 'raw/cnxk_gpio: fix file descriptor leak' " Kevin Traynor
2025-02-13  9:59 ` patch 'eal: fix devargs layers parsing out of bounds' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/qede: fix debug messages array' " Kevin Traynor
2025-02-13  9:59 ` patch 'examples/ptpclient: fix message parsing' " Kevin Traynor
2025-02-13  9:59 ` patch 'net/hinic: fix flow type bitmask overflow' " Kevin Traynor
2025-02-13  9:59 ` patch 'crypto/dpaa2_sec: fix bitmask truncation' " Kevin Traynor
2025-02-13  9:59 ` patch 'crypto/dpaa_sec: " Kevin Traynor
2025-02-13  9:59 ` patch 'event/dpaa: " Kevin Traynor
2025-02-13  9:59 ` patch 'net/dpaa: " Kevin Traynor
2025-02-13  9:59 ` patch 'net/dpaa2: " Kevin Traynor
2025-02-13  9:59 ` patch 'net/qede: fix nested loops' " Kevin Traynor
2025-02-13  9:59 ` patch 'examples/l3fwd: fix socket ID check' " Kevin Traynor
2025-02-13  9:59 ` patch 'common/cnxk: fix null " Kevin Traynor
2025-02-13  9:59 ` patch 'eal/linux: remove useless assignments' " Kevin Traynor
2025-02-13  9:59 ` patch 'mempool: fix errno in empty create' " Kevin Traynor
2025-02-13  9:59 ` patch 'doc: add tested platforms with NVIDIA NICs in 24.11' " Kevin Traynor
2025-02-13  9:59 ` patch 'doc: add two more tested Intel " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250213095933.362078-59-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=chenbox@nvidia.com \
    --cc=david.marchand@redhat.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).