From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Zhang Subject: [PATCH v3 2/4] vmxnet3: Avoid segfault caused by vmxnet3_dev_rx_queue_setup. Date: Sun, 8 Jan 2017 18:59:38 -0800 Message-ID: <1483930780-7064-2-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 BC8DA1E2F for ; Mon, 9 Jan 2017 03:59:49 +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 RX queue with 2048 RX queue size, and stop the device, changed queue size to 4096 and then start the device, there will be segment fault. We should allocate RX ring for max possible number of hardware descriptors. Signed-off-by: Nick Zhang --- drivers/net/vmxnet3/vmxnet3_rxtx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index e77374f..d5d7c33 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -977,8 +977,11 @@ comp_ring->next2proc = 0; comp_ring->gen = VMXNET3_INIT_GEN; - size = sizeof(struct Vmxnet3_RxDesc) * (ring0->size + ring1->size); - size += sizeof(struct Vmxnet3_RxCompDesc) * comp_ring->size; + /* Allocate RX ring for max possible number of hardware descriptors. */ + size = sizeof(struct Vmxnet3_RxDesc) * + (VMXNET3_RX_RING_MAX_SIZE * VMXNET3_RX_CMDRING_SIZE); + size += sizeof(struct Vmxnet3_RxCompDesc) * + (VMXNET3_RX_RING_MAX_SIZE * VMXNET3_RX_CMDRING_SIZE); mz = ring_dma_zone_reserve(dev, "rxdesc", queue_idx, size, socket_id); if (mz == NULL) { -- 1.8.3.1