[PATCH 03/10] do_discover: free cfg.device when resetting it
From: <hidden>
Date: 2021-03-06 00:37:45
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Martin Wilck <redacted> cfg.device might have been allocated by a previous call to find_ctrl_with_connectargs(), therefore free it. We must make sure that cfg.device is always on the heap, thus change fabrics_discover() accordingly. Signed-off-by: Martin Wilck <redacted> --- fabrics.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/fabrics.c b/fabrics.c
index dcee0c4..223bd04 100644
--- a/fabrics.c
+++ b/fabrics.c@@ -1378,7 +1378,11 @@ static int do_discover(char *argstr, bool connect, enum nvme_print_flags flags) if (!cargs) return -ENOMEM; - if (!cfg.device || !ctrl_matches_connectargs(cfg.device, cargs, true)) + if (cfg.device && !ctrl_matches_connectargs(cfg.device, cargs, true)) { + free(cfg.device); + cfg.device = NULL; + } + if (!cfg.device) cfg.device = find_ctrl_with_connectargs(cargs); free_connect_args(cargs);
@@ -1562,8 +1566,13 @@ int fabrics_discover(const char *desc, int argc, char **argv, bool connect) ret = flags = validate_output_format(cfg.output_format); if (ret < 0) goto out; - if (cfg.device && !strcmp(cfg.device, "none")) - cfg.device = NULL; + if (cfg.device && strcmp(cfg.device, "none")) { + cfg.device = strdup(cfg.device); + if (!cfg.device) { + ret = -ENOMEM; + goto out; + } + } cfg.nqn = NVME_DISC_SUBSYS_NAME;
--
2.29.2
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme