patch 'net/vmxnet3: fix crash after configuration failure' has been queued to stable release 22.11.7
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Tue Nov 12 23:07:32 CET 2024
Hi,
FYI, your patch has been queued to stable release 22.11.7
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/14/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/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/a45c6443f45e6eb6a5c92793c838f1aa241e929b
Thanks.
Luca Boccassi
---
>From a45c6443f45e6eb6a5c92793c838f1aa241e929b 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 c1c7539fff..52245c5fbb 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -347,6 +347,7 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
/* Vendor and Device ID need to be set before init of shared code */
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.45.2
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2024-11-12 22:06:59.390233043 +0000
+++ 0022-net-vmxnet3-fix-crash-after-configuration-failure.patch 2024-11-12 22:06:58.667307202 +0000
@@ -1 +1 @@
-From 439847c154ccf05e1a8bbb955c552921514d31e2 Mon Sep 17 00:00:00 2001
+From a45c6443f45e6eb6a5c92793c838f1aa241e929b 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 c1c7539fff..52245c5fbb 100644
@@ -47 +48 @@
-@@ -403,6 +403,7 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
+@@ -347,6 +347,7 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
More information about the stable
mailing list