From 5083de68b938fdcbfc05b9173019346a04bd4943 Mon Sep 17 00:00:00 2001 From: zhanghongtao Date: Mon, 10 Oct 2022 19:56:51 +0800 Subject: [PATCH] nvme_ctrlr_abort_queued_aborts Segmentation fault occurs due to recursion --- ..._queued_aborts-Segmentation-fault-oc.patch | 38 +++++++++++++++++++ spdk.spec | 7 +++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 0028-nvme_ctrlr_abort_queued_aborts-Segmentation-fault-oc.patch diff --git a/0028-nvme_ctrlr_abort_queued_aborts-Segmentation-fault-oc.patch b/0028-nvme_ctrlr_abort_queued_aborts-Segmentation-fault-oc.patch new file mode 100644 index 0000000..26b0153 --- /dev/null +++ b/0028-nvme_ctrlr_abort_queued_aborts-Segmentation-fault-oc.patch @@ -0,0 +1,38 @@ +From ade8e6254cb8720446dd38e2a29408ac57d7d5e6 Mon Sep 17 00:00:00 2001 +From: zhanghongtao +Date: Wed, 7 Sep 2022 17:08:29 +0800 +Subject: [PATCH] nvme_ctrlr_abort_queued_aborts Segmentation fault occurs due + to recursion + +When ctrlr destruct,we need to abort queued aborts. +Function nvme_ctrlr_abort_queued_aborts has a recursive call, +ctrlr->queued_aborts has been processed in recursion. + +Signed-off-by: zhanghongtao +--- + lib/nvme/nvme_ctrlr.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c +index 6c25f0d..a84affb 100644 +--- a/lib/nvme/nvme_ctrlr.c ++++ b/lib/nvme/nvme_ctrlr.c +@@ -1344,7 +1344,15 @@ nvme_ctrlr_abort_queued_aborts(struct spdk_nvme_ctrlr *ctrlr) + struct nvme_request *req, *tmp; + struct spdk_nvme_cpl cpl = {}; + ++#ifdef SPDK_CONFIG_APP_RW ++ if (ctrlr->is_destructed == true) { ++ cpl.status.sc = SPDK_NVME_SC_SUCCESS; ++ } else { ++ cpl.status.sc = SPDK_NVME_SC_ABORTED_SQ_DELETION; ++ } ++#else + cpl.status.sc = SPDK_NVME_SC_ABORTED_SQ_DELETION; ++#endif + cpl.status.sct = SPDK_NVME_SCT_GENERIC; + + STAILQ_FOREACH_SAFE(req, &ctrlr->queued_aborts, stailq, tmp) { +-- +2.27.0 + diff --git a/spdk.spec b/spdk.spec index f5ecf85..903de29 100644 --- a/spdk.spec +++ b/spdk.spec @@ -3,7 +3,7 @@ Name: spdk Version: 21.01.1 -Release: 5 +Release: 6 Summary: Set of libraries and utilities for high performance user-mode storage License: BSD and MIT URL: http://spdk.io @@ -35,6 +35,7 @@ Patch24: 0024-Add-CUSE-switch-for-nvme-ctrlr.patch Patch25: 0025-Adapt-for-ES3000-serial-vendor-special-opcode-in-CUS.patch Patch26: 0026-Fix-race-condition-in-continuous-setup-and-teardown-.patch Patch27: 0027-Change-log-level-in-poll-timeout.patch +Patch28: 0028-nvme_ctrlr_abort_queued_aborts-Segmentation-fault-oc.patch %define package_version %{version}-%{release} @@ -206,6 +207,10 @@ mv doc/output/html/ %{install_docdir} %changelog +* Mon Oct 10 2022 Hongtao Zhang - 21.01.1-6 +- nvme_ctrlr_abort_queued_aborts Segmentation fault occurs + due to recursion + * Tue May 24 2022 Weifeng Su - 21.01.1-5 - Add support for HSAK -- Gitee