diff --git a/.gitignore b/.gitignore index 1325bfc..a12fdab 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libnvme-1.13.tar.gz +SOURCES/libnvme-1.16.1.tar.gz diff --git a/.libnvme.metadata b/.libnvme.metadata index 2342f0a..658411c 100644 --- a/.libnvme.metadata +++ b/.libnvme.metadata @@ -1 +1 @@ -74b218672872a2ac194af2c34c06e66b1001b5f6 SOURCES/libnvme-1.13.tar.gz +f900568699e4653686fc66666d3c00243df358ff SOURCES/libnvme-1.16.1.tar.gz diff --git a/SOURCES/0001-tree-cleanup-paths-when-freeing-namespace.patch b/SOURCES/0001-tree-cleanup-paths-when-freeing-namespace.patch new file mode 100644 index 0000000..f875443 --- /dev/null +++ b/SOURCES/0001-tree-cleanup-paths-when-freeing-namespace.patch @@ -0,0 +1,40 @@ +diff --git a/src/nvme/tree.c b/src/nvme/tree.c +index bc83648..98822d0 100644 +--- a/src/nvme/tree.c ++++ b/src/nvme/tree.c +@@ -632,11 +632,18 @@ nvme_path_t nvme_namespace_next_path(nvme_ns_t ns, nvme_path_t p) + + static void __nvme_free_ns(struct nvme_ns *n) + { ++ struct nvme_path *p, *_p; ++ + list_del_init(&n->entry); + nvme_ns_release_fd(n); + free(n->generic_name); + free(n->name); + free(n->sysfs_dir); ++ nvme_namespace_for_each_path_safe(n, p, _p) { ++ list_del_init(&p->nentry); ++ p->n = NULL; ++ } ++ list_head_init(&n->head->paths); + free(n->head->sysfs_dir); + free(n->head); + free(n); +@@ -3033,16 +3040,8 @@ static int nvme_subsystem_scan_namespace(nvme_root_t r, nvme_subsystem_t s, + return -1; + } + nvme_subsystem_for_each_ns_safe(s, _n, __n) { +- struct nvme_path *p, *_p; +- + if (strcmp(n->name, _n->name)) + continue; +- /* Detach paths */ +- nvme_namespace_for_each_path_safe(_n, p, _p) { +- list_del_init(&p->nentry); +- p->n = NULL; +- } +- list_head_init(&_n->head->paths); + __nvme_free_ns(_n); + } + n->s = s; diff --git a/SPECS/libnvme.spec b/SPECS/libnvme.spec index a086365..0570635 100644 --- a/SPECS/libnvme.spec +++ b/SPECS/libnvme.spec @@ -3,11 +3,12 @@ Name: libnvme Summary: Linux-native nvme device management library -Version: 1.13 -Release: 1%{?dist} +Version: 1.16.1 +Release: 3%{?dist} License: LGPL-2.1-or-later URL: https://github.com/linux-nvme/libnvme Source0: %{url}/archive/v%{version_no_tilde}/%{name}-%{version_no_tilde}.tar.gz +Patch0: 0001-tree-cleanup-paths-when-freeing-namespace.patch BuildRequires: gcc gcc-c++ BuildRequires: swig @@ -71,9 +72,9 @@ mv %{buildroot}/usr/*.rst %{buildroot}%{_pkgdocdir}/ %files %license COPYING ccan/licenses/* %{_libdir}/libnvme.so.1 -%{_libdir}/libnvme.so.1.13.0 +%{_libdir}/libnvme.so.1.16.1 %{_libdir}/libnvme-mi.so.1 -%{_libdir}/libnvme-mi.so.1.13.0 +%{_libdir}/libnvme-mi.so.1.16.1 %files devel %{_libdir}/libnvme.so @@ -93,6 +94,15 @@ mv %{buildroot}/usr/*.rst %{buildroot}%{_pkgdocdir}/ %{python3_sitearch}/libnvme/* %changelog +* Wed Mar 11 2026 Maurizio Lombardi - 1.16.1-3 +- Fix linked list corruption RHEL-146273 + +* Fri Nov 21 2025 Maurizio Lombardi - 1.16.1-2 +- Respin for RHEL-114102 + +* Thu Nov 20 2025 Maurizio Lombardi - 1.16.1-1 +- Rebase to version 1.16.1 (RHEL-114102) + * Tue Apr 29 2025 Maurizio Lombardi - 1.13-1 - Update to version 1.13 (RHEL-88847)