Commit 7bf78abb authored by Marcin Spiewak's avatar Marcin Spiewak Committed by Tomasz Zawadzki
Browse files

nvme: free process structures for all transports



Fixed memory leak in nvme_ctrlr_add_process function.
For TCP and RDMA transports, memory allocated for ctrl_proc
structure was never freed, as the nvme_ctrlr_free_processes()
function was not called at the end of controller destruction.

Now the memory leak is fixed, and a call to
nvme_ctrlr_free_processes() is added to the
nvme_ctrlr_destruct_finish() function, so it is called
for all types of transports.

Also the stubs for nvme_ctrlr_free_processes() are removed
from unit tests, as they are not needed now.

Suggested-by: default avatarJim Harris <jim.harris@samsung.com>

Change-Id: I54a2bdbb32b4f1c56d9c2fccfb1e93cb932f375d
Signed-off-by: default avatarMarcin Spiewak <marcin.spiewak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21782


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarSebastian Brzezinka <sebastian.brzezinka@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent 7b20e84e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4195,6 +4195,8 @@ void
nvme_ctrlr_destruct_finish(struct spdk_nvme_ctrlr *ctrlr)
{
	pthread_mutex_destroy(&ctrlr->ctrlr_lock);

	nvme_ctrlr_free_processes(ctrlr);
}

void
+0 −2
Original line number Diff line number Diff line
@@ -1017,8 +1017,6 @@ nvme_pcie_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)

	nvme_ctrlr_destruct_finish(ctrlr);

	nvme_ctrlr_free_processes(ctrlr);

	nvme_pcie_ctrlr_free_bars(pctrlr);

	if (devhandle) {
+0 −2
Original line number Diff line number Diff line
@@ -301,8 +301,6 @@ nvme_vfio_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)

	nvme_ctrlr_destruct_finish(ctrlr);

	nvme_ctrlr_free_processes(ctrlr);

	spdk_vfio_user_release(vctrlr->dev);
	free(vctrlr);

+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ DEFINE_STUB_V(nvme_completion_poll_cb, (void *arg, const struct spdk_nvme_cpl *c

DEFINE_STUB(nvme_ctrlr_submit_admin_request, int, (struct spdk_nvme_ctrlr *ctrlr,
		struct nvme_request *req), 0);
DEFINE_STUB_V(nvme_ctrlr_free_processes, (struct spdk_nvme_ctrlr *ctrlr));

DEFINE_STUB(nvme_ctrlr_proc_get_devhandle, struct spdk_pci_device *,
	    (struct spdk_nvme_ctrlr *ctrlr), NULL);
DEFINE_STUB(spdk_pci_device_unmap_bar, int, (struct spdk_pci_device *dev, uint32_t bar, void *addr),