patch 'net/vmxnet3: fix crash after configuration failure' has been queued to stable release 21.11.9

Kevin Traynor ktraynor at redhat.com
Wed Nov 27 18:18:32 CET 2024


Hi,

FYI, your patch has been queued to stable release 21.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 12/02/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/3a8ff580f5f6107af56b593c77f0e0d128dae47d

Thanks.

Kevin

---
>From 3a8ff580f5f6107af56b593c77f0e0d128dae47d Mon Sep 17 00:00:00 2001
From: Roger Melton <rmelton at cisco.com>
Date: Sat, 26 Oct 2024 10:33:36 -0400
Subject: [PATCH] net/vmxnet3: fix crash after configuration failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit 439847c154ccf05e1a8bbb955c552921514d31e2 ]

Problem:

If vxmnet3_dev_configure() fails, applications may call
vmxnet3_dev_close(). If the failure occurs before the vmxnet3
hw->shared structure is allocated the close will lead to a segv.

Root Cause:

This crash is due to incorrect adapter_stopped state in the
vmxnet3 dev_private structure. When dev_private is allocated,
adapter_stopped will be 0 (FALSE).  eth_vmxnet3_dev_init() does not
set it to TRUE, so it will remain FALSE until a successful
vmxnet3_dev_start() followed by a vmxnet3_dev_stop().  When
vmxnet3_dev_close() is called, it will invoke vmxnet3_dev_stop().
vmxnet3_dev_stop() will check the adapter_stopped state in the
vmxnet3 shared data, find it is FALSE and will proceed to stop the
device, calling vmxnet3_disable_all_intrs().
vmxnet3_disable_all_intrs() attempts to access the vmxnet3 shared data
resulting in the segv.

Solution:

Set adapter_stopped to TRUE in eth_vmxnet3_dev_init(), to prevent stop
processing.

Fixes: dfaff37fc46d ("vmxnet3: import new vmxnet3 poll mode driver implementation")

Signed-off-by: Roger Melton <rmelton at cisco.com>
Acked-by: Morten Brørup <mb at smartsharesystems.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index 32d1036c4f..8b3d4184d1 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -310,4 +310,5 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
 	hw->device_id = pci_dev->id.device_id;
 	hw->vendor_id = pci_dev->id.vendor_id;
+	hw->adapter_stopped = TRUE;
 	hw->hw_addr0 = (void *)pci_dev->mem_resource[0].addr;
 	hw->hw_addr1 = (void *)pci_dev->mem_resource[1].addr;
-- 
2.47.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2024-11-27 17:17:40.940961156 +0000
+++ 0085-net-vmxnet3-fix-crash-after-configuration-failure.patch	2024-11-27 17:17:38.286269689 +0000
@@ -1 +1 @@
-From 439847c154ccf05e1a8bbb955c552921514d31e2 Mon Sep 17 00:00:00 2001
+From 3a8ff580f5f6107af56b593c77f0e0d128dae47d Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 439847c154ccf05e1a8bbb955c552921514d31e2 ]
+
@@ -35 +36,0 @@
-Cc: stable at dpdk.org
@@ -44 +45 @@
-index 78fac63ab6..79ab167421 100644
+index 32d1036c4f..8b3d4184d1 100644
@@ -47 +48 @@
-@@ -404,4 +404,5 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
+@@ -310,4 +310,5 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)



More information about the stable mailing list