Blob Blame History Raw
commit df80eb6a6357bbaa05dcad3503918745323ad8f1
Author: Tomas Bzatek <tbzatek@redhat.com>
Date:   Tue Mar 22 16:22:30 2022 +0100

    tree: Fix subsystem initialization in nvme_scan_ctrl()
    
    The subsystem instance would normally get properly initialized
    in later stages of topology scanning, unless there's a host
    mismatch and the instance would stand alone.

diff --git a/src/nvme/tree.c b/src/nvme/tree.c
index 96106b0..0764690 100644
--- a/src/nvme/tree.c
+++ b/src/nvme/tree.c
@@ -1364,10 +1364,13 @@ nvme_ctrl_t nvme_scan_ctrl(nvme_root_t r, const char *name)
 	subsysname = nvme_ctrl_lookup_subsystem_name(r, name);
 	/* subsysname might be NULL here */
 	s = nvme_lookup_subsystem(h, subsysname, subsysnqn);
-	if (subsysname)
-		free(subsysname);
 	free(subsysnqn);
-	if (!s) {
+
+	ret = 0;
+	if (s && !s->name)
+		ret = nvme_init_subsystem(s, subsysname);
+	free(subsysname);
+	if (!s || ret < 0) {
 		free(path);
 		errno = ENOMEM;
 		return NULL;