From 9f703d301c451aaae70df26f3d4e76a088e7e867 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 23 Apr 2020 01:02:17 -0400 Subject: [PATCH] libnvme: Unset ctrlr on teardown. This way we do not attempt to tear down more than once, which triggers an assert in mutex destruction. --- src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_qpair.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_qpair.c b/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_qpair.c index 42821045e0..cc96162aaf 100644 --- a/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_qpair.c +++ b/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_qpair.c @@ -961,6 +961,9 @@ fail: void nvme_qpair_destroy(struct nvme_qpair *qpair) { + if (!qpair->ctrlr) + return; // Not initialized. + if (nvme_qpair_is_admin_queue(qpair)) _nvme_qpair_admin_qpair_destroy(qpair); @@ -978,6 +981,8 @@ void nvme_qpair_destroy(struct nvme_qpair *qpair) } nvme_request_pool_destroy(qpair); + qpair->ctrlr = NULL; + pthread_mutex_destroy(&qpair->lock); }