nvmf: Adjust the resource free order for transport
Reason: In spdk_nvmf_subsystem_destroy, we call spdk_nvmf_ctrlr_destruct(ctrlr), and this function will still use the transport, so definitely, it is a defect(reproduced in my platform). So we need to defer freeing the transport resource. Change-Id: I3eee2a29c223e2759a623604485af6f081746581 Signed-off-by: Ziye Yang <optimistyzy@gmail.com> Reviewed-on: https://review.gerrithub.io/399368 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
39fc8d8a22
commit
32ad027b0c
@ -188,11 +188,6 @@ spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt)
|
||||
struct spdk_nvmf_transport *transport, *transport_tmp;
|
||||
uint32_t i;
|
||||
|
||||
TAILQ_FOREACH_SAFE(transport, &tgt->transports, link, transport_tmp) {
|
||||
TAILQ_REMOVE(&tgt->transports, transport, link);
|
||||
spdk_nvmf_transport_destroy(transport);
|
||||
}
|
||||
|
||||
if (tgt->discovery_log_page) {
|
||||
free(tgt->discovery_log_page);
|
||||
}
|
||||
@ -206,6 +201,11 @@ spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt)
|
||||
free(tgt->subsystems);
|
||||
}
|
||||
|
||||
TAILQ_FOREACH_SAFE(transport, &tgt->transports, link, transport_tmp) {
|
||||
TAILQ_REMOVE(&tgt->transports, transport, link);
|
||||
spdk_nvmf_transport_destroy(transport);
|
||||
}
|
||||
|
||||
free(tgt);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user