From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Zhang Subject: [PATCH v3 4/4] vmxnet3: Avoid segfault caused by vmxnet3_dev_tx_queue_setup. Date: Sun, 8 Jan 2017 18:59:40 -0800 Message-ID: <1483930780-7064-4-git-send-email-nic@opencloud.tech> References: <1483930780-7064-1-git-send-email-nic@opencloud.tech> Cc: ferruh.yigit@intel.com, dev@dpdk.org, Nick Zhang To: yongwang@vmware.com Return-path: Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by dpdk.org (Postfix) with ESMTP id EBFC02C58 for ; Mon, 9 Jan 2017 03:59:54 +0100 (CET) In-Reply-To: <1483930780-7064-1-git-send-email-nic@opencloud.tech> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When we config TX queue with 2048 TX queue size, stop the device, changed queue size to 4096 and then start the device, there will be segment fault. We should allocate TX ring for max possible number of hardware descriptors. Signed-off-by: Nick Zhang --- drivers/net/vmxnet3/vmxnet3_rxtx.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index f00b3b9..5f35a2e 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -874,9 +874,10 @@ comp_ring->next2proc = 0; comp_ring->gen = VMXNET3_INIT_GEN; - size = sizeof(struct Vmxnet3_TxDesc) * ring->size; - size += sizeof(struct Vmxnet3_TxCompDesc) * comp_ring->size; - size += sizeof(struct Vmxnet3_TxDataDesc) * data_ring->size; + /* Allocate Tx ring for max possible number of hardware descriptors. */ + size = sizeof(struct Vmxnet3_TxDesc) * VMXNET3_TX_RING_MAX_SIZE; + size += sizeof(struct Vmxnet3_TxCompDesc) * VMXNET3_TX_RING_MAX_SIZE; + size += sizeof(struct Vmxnet3_TxDataDesc) * VMXNET3_TX_RING_MAX_SIZE; mz = ring_dma_zone_reserve(dev, "txdesc", queue_idx, size, socket_id); if (mz == NULL) { -- 1.8.3.1