[v4] net/i40e: fix core dumped when setting txq or rxq to 0 in VF

Message ID 1562204319-15833-1-git-send-email-andy.pei@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series [v4] net/i40e: fix core dumped when setting txq or rxq to 0 in VF |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/Intel-compilation fail apply issues

Commit Message

Pei, Andy July 4, 2019, 1:38 a.m. UTC
  Testpmd would stuck and result in core dump when user specifies an
invalid VF queue number, for example when setting txq or rxq to 0.
When txq or rxq is set to 0, pointer of pointer rxq or txq in
function i40evf_configure_vsi_queues is NULL. The usage of txq[i]
or rxq[0] is valid. This patch fixes this issue.

Fixes: d6b19729093e ("i40evf: support configurable crc stripping")
Cc: helin.zhang@intel.com
Cc: stable@dpdk.org

Signed-off-by: Andy Pei <andy.pei@intel.com>
---
v4:
* use "txq ? txq[i] : txq" to avoid some duplicate.
* a more specific description of the issue in the commit message.

v3:
* no need to use a new line for each parameter when call envoke a
  function. A new line comes when the current line is more than
  80 characters.

    v2:
* modify commit meaasage so one line contains not more than 72
  characters.
* delete unnecessary parentheses around 'queue_id < nb_txq'
* delete unnecessary parentheses around 'queue_id < nb_rxq'

Cc: roy.fan.zhang@intel.com
Cc: qi.z.zhang@intel.com
Cc: jingjing.wu@intel.com
Cc: beilei.xing@intel.com
Cc: ferruh.yigit@intel.com
Cc: rosen.xu@intel.com
Cc: xiaolong.ye@intel.com

 drivers/net/i40e/i40e_ethdev_vf.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
  

Comments

Qi Zhang July 4, 2019, 6:17 a.m. UTC | #1
> -----Original Message-----
> From: Pei, Andy
> Sent: Thursday, July 4, 2019 9:39 AM
> To: dev@dpdk.org
> Cc: Pei, Andy <andy.pei@intel.com>; Zhang, Helin <helin.zhang@intel.com>;
> stable@dpdk.org; Zhang, Roy Fan <roy.fan.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xu, Rosen
> <rosen.xu@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Subject: [PATCH v4] net/i40e: fix core dumped when setting txq or rxq to 0 in
> VF
> 
> Testpmd would stuck and result in core dump when user specifies an invalid
> VF queue number, for example when setting txq or rxq to 0.
> When txq or rxq is set to 0, pointer of pointer rxq or txq in function
> i40evf_configure_vsi_queues is NULL. The usage of txq[i] or rxq[0] is valid. This
> patch fixes this issue.
> 
> Fixes: d6b19729093e ("i40evf: support configurable crc stripping")
> Cc: helin.zhang@intel.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Andy Pei <andy.pei@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  
Pei, Andy July 4, 2019, 6:20 a.m. UTC | #2
Thanks Qi

-----Original Message-----
From: Zhang, Qi Z 
Sent: Thursday, July 4, 2019 2:18 PM
To: Pei, Andy <andy.pei@intel.com>; dev@dpdk.org
Cc: Zhang, Helin <helin.zhang@intel.com>; stable@dpdk.org; Zhang, Roy Fan <roy.fan.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xu, Rosen <rosen.xu@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
Subject: RE: [PATCH v4] net/i40e: fix core dumped when setting txq or rxq to 0 in VF



> -----Original Message-----
> From: Pei, Andy
> Sent: Thursday, July 4, 2019 9:39 AM
> To: dev@dpdk.org
> Cc: Pei, Andy <andy.pei@intel.com>; Zhang, Helin 
> <helin.zhang@intel.com>; stable@dpdk.org; Zhang, Roy Fan 
> <roy.fan.zhang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, 
> Jingjing <jingjing.wu@intel.com>; Xing, Beilei 
> <beilei.xing@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xu, 
> Rosen <rosen.xu@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Subject: [PATCH v4] net/i40e: fix core dumped when setting txq or rxq 
> to 0 in VF
> 
> Testpmd would stuck and result in core dump when user specifies an 
> invalid VF queue number, for example when setting txq or rxq to 0.
> When txq or rxq is set to 0, pointer of pointer rxq or txq in function 
> i40evf_configure_vsi_queues is NULL. The usage of txq[i] or rxq[0] is 
> valid. This patch fixes this issue.
> 
> Fixes: d6b19729093e ("i40evf: support configurable crc stripping")
> Cc: helin.zhang@intel.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Andy Pei <andy.pei@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index d922a84..5be32b0 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -573,7 +573,7 @@  struct rte_i40evf_xstats_name_off {
 {
 	txq_info->vsi_id = vsi_id;
 	txq_info->queue_id = queue_id;
-	if (queue_id < nb_txq) {
+	if (queue_id < nb_txq && txq) {
 		txq_info->ring_len = txq->nb_tx_desc;
 		txq_info->dma_ring_addr = txq->tx_ring_phys_addr;
 	}
@@ -590,7 +590,7 @@  struct rte_i40evf_xstats_name_off {
 	rxq_info->vsi_id = vsi_id;
 	rxq_info->queue_id = queue_id;
 	rxq_info->max_pkt_size = max_pkt_size;
-	if (queue_id < nb_rxq) {
+	if (queue_id < nb_rxq && rxq) {
 		rxq_info->ring_len = rxq->nb_rx_desc;
 		rxq_info->dma_ring_addr = rxq->rx_ring_phys_addr;
 		rxq_info->databuffer_size =
@@ -623,10 +623,11 @@  struct rte_i40evf_xstats_name_off {
 
 	for (i = 0, vc_qpi = vc_vqci->qpair; i < nb_qp; i++, vc_qpi++) {
 		i40evf_fill_virtchnl_vsi_txq_info(&vc_qpi->txq,
-			vc_vqci->vsi_id, i, dev->data->nb_tx_queues, txq[i]);
+			vc_vqci->vsi_id, i, dev->data->nb_tx_queues,
+			txq ? txq[i] : NULL);
 		i40evf_fill_virtchnl_vsi_rxq_info(&vc_qpi->rxq,
 			vc_vqci->vsi_id, i, dev->data->nb_rx_queues,
-					vf->max_pkt_len, rxq[i]);
+			vf->max_pkt_len, rxq ? rxq[i] : NULL);
 	}
 	memset(&args, 0, sizeof(args));
 	args.ops = VIRTCHNL_OP_CONFIG_VSI_QUEUES;