diff options
author | Alexander Motin <mav@FreeBSD.org> | 2021-08-31 00:36:22 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2021-09-07 01:24:53 +0000 |
commit | d9cacf0b66c3b43417c39552903f010c9f3c32de (patch) | |
tree | ff9ef2092a945bbc70cad6cee84849b313cd00ef /sys/dev | |
parent | 93c52669d510fe38a185c71eab7fdae990ece823 (diff) |
nvme(4): Do not panic on admin queue construct error.
MFC after: 1 week
(cherry picked from commit 31111372e6bad7212dbee36dd312e3b53fdfd3f6)
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/nvme/nvme_ctrlr.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index d8760158a75f..c4a41c453b6a 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -1474,6 +1474,8 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev) if (ctrlr->resource == NULL) goto nores; + if (!mtx_initialized(&ctrlr->adminq.lock)) + goto noadminq; /* * Check whether it is a hot unplug or a clean driver detach. @@ -1519,6 +1521,7 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev) if (!gone) nvme_ctrlr_disable(ctrlr); +noadminq: if (ctrlr->taskqueue) taskqueue_free(ctrlr->taskqueue); |