From a15b6af0a673a97294238c9c2f7ca5941003d131 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);