From b6bb252e238fc2d0d6f51eb482c1ef1e15ba6995 Mon Sep 17 00:00:00 2001 From: Liu Xiaodong Date: Mon, 26 Sep 2022 02:15:34 -0400 Subject: [PATCH] lib/nvmf: fix async_events index When data_local.num_async_events > SPDK_NVMF_MIGR_MAX_PENDING_AERS, data_local.async_events was already indexed by 256, and it was out of bounds. Signed-off-by: Liu Xiaodong Change-Id: I15cfdeb9bc165de0c73fbc9171b0ce6d8689c0aa Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14666 Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot --- lib/nvmf/ctrlr.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index d4ac9561d..19d018346 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -1948,11 +1948,12 @@ spdk_nvmf_ctrlr_save_migr_data(struct spdk_nvmf_ctrlr *ctrlr, data_local.num_aer_cids = ctrlr->nr_aer_reqs; STAILQ_FOREACH_SAFE(event, &ctrlr->async_events, link, event_tmp) { - data_local.async_events[data_local.num_async_events++].raw = event->event.raw; - if (data_local.num_async_events > SPDK_NVMF_MIGR_MAX_PENDING_AERS) { + if (data_local.num_async_events + 1 > SPDK_NVMF_MIGR_MAX_PENDING_AERS) { SPDK_ERRLOG("ctrlr %p has too many pending AERs\n", ctrlr); break; } + + data_local.async_events[data_local.num_async_events++].raw = event->event.raw; } for (i = 0; i < ctrlr->nr_aer_reqs; i++) {