diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 83c947eda..e458a8215 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -90,7 +90,7 @@ struct spdk_nvmf_tgt { }; struct spdk_nvmf_host { - char *nqn; + char nqn[SPDK_NVMF_NQN_MAX_LEN + 1]; TAILQ_ENTRY(spdk_nvmf_host) link; }; diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 15e6753ff..96f931b9e 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -308,7 +308,6 @@ static void _spdk_nvmf_subsystem_remove_host(struct spdk_nvmf_subsystem *subsystem, struct spdk_nvmf_host *host) { TAILQ_REMOVE(&subsystem->hosts, host, link); - free(host->nqn); free(host); } @@ -648,11 +647,8 @@ spdk_nvmf_subsystem_add_host(struct spdk_nvmf_subsystem *subsystem, const char * if (!host) { return -ENOMEM; } - host->nqn = strdup(hostnqn); - if (!host->nqn) { - free(host); - return -ENOMEM; - } + + snprintf(host->nqn, sizeof(host->nqn), "%s", hostnqn); TAILQ_INSERT_HEAD(&subsystem->hosts, host, link); subsystem->tgt->discovery_genctr++;