[PATCH v3 6/9] net/memif: refuse connection on stopped device
Sriram Yagnaraman
sriram.yagnaraman at ericsson.com
Fri Oct 16 16:15:54 CEST 2026
A memif server cleared ETH_MEMIF_FLAG_DISABLED at dev_start (in
memif_connect_server()) but dev_stop never set it again. memif_create()
sets it, so a never-started server rejects peers, but once started and
then stopped the flag stayed clear and memif_msg_receive_init() kept
accepting connections. A peer connecting to a stopped server bound
pmd->cc and, on the CONNECT message, memif_connect() set
ETH_MEMIF_FLAG_CONNECTED and reported link up on a stopped port.
Set ETH_MEMIF_FLAG_DISABLED in memif_dev_stop() before disconnecting so
a stopped server refuses peers.
Fixes: 09c7e63a71f9 ("net/memif: introduce memory interface PMD")
Cc: stable at dpdk.org
Suggested-by: Stephen Hemminger <stephen at networkplumber.org>
Signed-off-by: Sriram Yagnaraman <sriram.yagnaraman at ericsson.com>
---
drivers/net/memif/rte_eth_memif.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c
index e70443976d..852a7e2e8e 100644
--- a/drivers/net/memif/rte_eth_memif.c
+++ b/drivers/net/memif/rte_eth_memif.c
@@ -1699,6 +1699,12 @@ memif_dev_stop(struct rte_eth_dev *dev)
rte_eal_alarm_cancel(memif_bad_desc_disconnect, dev);
rte_atomic_store_explicit(&pmd->bad_desc, false, rte_memory_order_relaxed);
+ /* Refuse peers while stopped: a server must not accept a connection
+ * after dev_stop, which would leave a live control channel on a
+ * stopped port.
+ */
+ pmd->flags |= ETH_MEMIF_FLAG_DISABLED;
+
memif_disconnect(dev);
for (i = 0; i < dev->data->nb_rx_queues; i++)
--
2.43.7
More information about the dev
mailing list