From b547f402fc2c9b3ca92fb9e9079d5adf73a089eb Mon Sep 17 00:00:00 2001 From: Zht-Try Date: Tue, 5 Mar 2024 18:57:06 +0800 Subject: [PATCH] Fix probe core dump while admin cmd timeout --- ...nit_module-core-dump-while-admin-cmd.patch | 44 +++++++++++++++++++ spdk.spec | 5 ++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 0044-Fix-libstorage_init_module-core-dump-while-admin-cmd.patch diff --git a/0044-Fix-libstorage_init_module-core-dump-while-admin-cmd.patch b/0044-Fix-libstorage_init_module-core-dump-while-admin-cmd.patch new file mode 100644 index 0000000..f976b25 --- /dev/null +++ b/0044-Fix-libstorage_init_module-core-dump-while-admin-cmd.patch @@ -0,0 +1,44 @@ +From b65e49945693206a146c91649a59772d262e91fb Mon Sep 17 00:00:00 2001 +From: zhanghongtao +Date: Wed, 10 Jan 2024 15:41:14 +0800 +Subject: [PATCH] Fix libstorage_init_module core dump while admin cmd timeout + +We set TimeoutUsec 10 and ActionOnTimeout Reset,When create ctrlr +for SAMSUNG nvme disk which supported security send/recv cmd. +Function spdk_opal_dev_construct will send cmd,but trid_entry is not inserted. +Then in process timeout reset occured a NULL pointer access. +To fix this,we insert tird in advance. + +Signed-off-by: Hongtao Zhang +--- + module/bdev/nvme/bdev_nvme.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c +index f284704..1ca375c 100644 +--- a/module/bdev/nvme/bdev_nvme.c ++++ b/module/bdev/nvme/bdev_nvme.c +@@ -1666,6 +1666,10 @@ nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr, + spdk_nvme_ctrlr_register_aer_callback(ctrlr, aer_cb, nvme_bdev_ctrlr); + spdk_nvme_ctrlr_set_remove_cb(ctrlr, remove_cb, nvme_bdev_ctrlr); + ++#ifdef SPDK_CONFIG_APP_RW ++ TAILQ_INSERT_HEAD(&nvme_bdev_ctrlr->trids, trid_entry, link); ++#endif ++ + if (spdk_nvme_ctrlr_get_flags(nvme_bdev_ctrlr->ctrlr) & + SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { + nvme_bdev_ctrlr->opal_dev = spdk_opal_dev_construct(nvme_bdev_ctrlr->ctrlr); +@@ -1674,7 +1678,9 @@ nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr, + } + } + ++#ifndef SPDK_CONFIG_APP_RW + TAILQ_INSERT_HEAD(&nvme_bdev_ctrlr->trids, trid_entry, link); ++#endif + return 0; + + err_init_ocssd: +-- +2.33.0 + diff --git a/spdk.spec b/spdk.spec index c169ef7..accef95 100644 --- a/spdk.spec +++ b/spdk.spec @@ -4,7 +4,7 @@ Name: spdk Version: 21.01.1 -Release: 17 +Release: 18 Summary: Set of libraries and utilities for high performance user-mode storage License: BSD and MIT URL: http://spdk.io @@ -228,6 +228,9 @@ mv doc/output/html/ %{install_docdir} %changelog +* Mon Mar 4 2024 zhanghongtao - 21.01.1-18 +- Fix probe core dump while admin cmd timeout + * Tue Sep 5 2023 Hongtao Zhang - 21.01.1-17 - Replace backport solution to fix race condition in cuse session -- Gitee