[dpdk-dev,v3,2/4] vmxnet3: Avoid segfault caused by vmxnet3_dev_rx_queue_setup.
Checks
Commit Message
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 <nic@opencloud.tech>
---
drivers/net/vmxnet3/vmxnet3_rxtx.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
@@ -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) {