patch 'bus/vdev: fix device reinitialization' has been queued to stable release 21.11.8

Kevin Traynor ktraynor at redhat.com
Fri Aug 23 18:19:19 CEST 2024


Hi,

FYI, your patch has been queued to stable release 21.11.8

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

Thanks.

Kevin

---
>From a12d1910bc56029b39db32f42ecfcd7b2ab739dc Mon Sep 17 00:00:00 2001
From: Mingjin Ye <mingjinx.ye at intel.com>
Date: Tue, 16 Jul 2024 09:53:28 +0000
Subject: [PATCH] bus/vdev: fix device reinitialization

[ upstream commit 1bd1ab6fd010837773473d821f9284369b37264c ]

In secondary processes, insert_vdev() may be called multiple times on the
same device due to multi-process hot-plugging of the vdev bus and EAL
parameters to add the same vdev.

In this case, when rte_devargs_insert() is called, the devargs->name
reference will be invalidated because rte_devargs_insert() destroys the
just-allocated devargs and replaces the pointer from the devargs list.
As a result, the reference to devargs->name stored in dev->device.name
will be invalid.

This patch fixes the issue by setting the device name after calling
rte_devargs_insert().

Fixes: cdb068f031c6 ("bus/vdev: scan by multi-process channel")

Signed-off-by: Mingjin Ye <mingjinx.ye at intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 drivers/bus/vdev/vdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 272ea704e5..c040a6d09e 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -290,5 +290,4 @@ insert_vdev(const char *name, const char *args,
 	dev->device.bus = &rte_vdev_bus;
 	dev->device.numa_node = SOCKET_ID_ANY;
-	dev->device.name = devargs->name;
 
 	if (find_vdev(name)) {
@@ -305,4 +304,5 @@ insert_vdev(const char *name, const char *args,
 		rte_devargs_insert(&devargs);
 	dev->device.devargs = devargs;
+	dev->device.name = devargs->name;
 	TAILQ_INSERT_TAIL(&vdev_device_list, dev, next);
 
-- 
2.46.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2024-08-23 17:18:13.618398777 +0100
+++ 0131-bus-vdev-fix-device-reinitialization.patch	2024-08-23 17:18:09.893430710 +0100
@@ -1 +1 @@
-From 1bd1ab6fd010837773473d821f9284369b37264c Mon Sep 17 00:00:00 2001
+From a12d1910bc56029b39db32f42ecfcd7b2ab739dc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1bd1ab6fd010837773473d821f9284369b37264c ]
+
@@ -20 +21,0 @@
-Cc: stable at dpdk.org
@@ -29 +30 @@
-index 38d05a9fe9..ec7abe7cda 100644
+index 272ea704e5..c040a6d09e 100644
@@ -32 +33 @@
-@@ -289,5 +289,4 @@ insert_vdev(const char *name, const char *args,
+@@ -290,5 +290,4 @@ insert_vdev(const char *name, const char *args,
@@ -38 +39 @@
-@@ -304,4 +303,5 @@ insert_vdev(const char *name, const char *args,
+@@ -305,4 +304,5 @@ insert_vdev(const char *name, const char *args,



More information about the stable mailing list