From 784097ba906ad031a152586e31e5003c9c8ceb5d Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Fri, 26 Nov 2021 04:39:38 -0500 Subject: [PATCH] nvmf: fix transport adding to tgt adding transport to tgt should be the last step also there is an issue before change i.e. if calloc failed then transport remains on the list Signed-off-by: Jacek Kalwas Change-Id: Iaf29cfc7b0f535d40160c6fdf9ef6a7e6bfb127c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10429 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk --- lib/nvmf/nvmf.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 60ac8ef0b..4265c9050 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -724,11 +724,12 @@ _nvmf_tgt_add_transport_done(struct spdk_io_channel_iter *i, int status) { struct spdk_nvmf_tgt_add_transport_ctx *ctx = spdk_io_channel_iter_get_ctx(i); - if (status) { - TAILQ_REMOVE(&ctx->tgt->transports, ctx->transport, link); + if (!status) { + ctx->transport->tgt = ctx->tgt; + TAILQ_INSERT_TAIL(&ctx->tgt->transports, ctx->transport, link); } - ctx->cb_fn(ctx->cb_arg, status); + ctx->cb_fn(ctx->cb_arg, status); free(ctx); } @@ -756,9 +757,6 @@ void spdk_nvmf_tgt_add_transport(struct spdk_nvmf_tgt *tgt, return; /* transport already created */ } - transport->tgt = tgt; - TAILQ_INSERT_TAIL(&tgt->transports, transport, link); - ctx = calloc(1, sizeof(*ctx)); if (!ctx) { cb_fn(cb_arg, -ENOMEM);