Commit 32ad027b authored by Ziye Yang's avatar Ziye Yang Committed by Jim Harris
Browse files

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: default avatarZiye Yang <optimistyzy@gmail.com>
Reviewed-on: https://review.gerrithub.io/399368


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 39fc8d8a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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);
}