Thread (27 messages) 27 messages, 3 authors, 2017-03-10

Re: [PATCH v3 1/2] net/i40e: fix segmentation fault in close

From: Wu, Jingjing <hidden>
Date: 2017-01-17 14:34:04

quoted hunk ↗ jump to hunk
-----Original Message-----
From: Iremonger, Bernard
Sent: Thursday, January 12, 2017 9:58 PM
To: dev@dpdk.org; Lu, Wenzhuo <redacted>; Wu, Jingjing
[off-list ref]; Zhang, Helin [off-list ref]
Cc: Iremonger, Bernard <redacted>; stable@dpdk.org
Subject: [PATCH v3 1/2] net/i40e: fix segmentation fault in close

Change the order of releasing the vsi's.
Release the vmdq vsi's first, then release the main vsi.

Fixes: 4861cde46116 ("i40e: new poll mode driver")

CC: stable@dpdk.org

Signed-off-by: Bernard Iremonger <redacted>
---
 drivers/net/i40e/i40e_ethdev.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index f13e61b..e8cfec8 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2068,18 +2068,17 @@ i40e_dev_close(struct rte_eth_dev *dev)
 	/* shutdown and destroy the HMC */
 	i40e_shutdown_lan_hmc(hw);

-	/* release all the existing VSIs and VEBs */
-	i40e_fdir_teardown(pf);
-	i40e_vsi_release(pf->main_vsi);
-
 	for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++) {
 		i40e_vsi_release(pf->vmdq[i].vsi);
 		pf->vmdq[i].vsi = NULL;
 	}
-
 	rte_free(pf->vmdq);
 	pf->vmdq = NULL;

+	/* release all the existing VSIs and VEBs */
+	i40e_fdir_teardown(pf);
+	i40e_vsi_release(pf->main_vsi);
+
 	/* shutdown the adminq */
 	i40e_aq_queue_shutdown(hw, true);
 	i40e_shutdown_adminq(hw);
@@ -4342,6 +4341,9 @@ i40e_vsi_release(struct i40e_vsi *vsi)
 	if (!vsi)
 		return I40E_SUCCESS;

+	if (!vsi->adapter)
+		return I40E_ERR_BAD_PTR;
+
The change looks fine to me.
Only minor comments like:
The dev_close is ethdev level ops, I40E_XX error code need to be replaced by 
The error code defined in ethedev level.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help