From: mwilck@suse.com
To: Keith Busch <kbusch@kernel.org>, Sagi Grimberg <sagi@grimberg.me>,
Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
Hannes Reinecke <hare@suse.de>
Cc: linux-nvme@lists.infradead.org,
Enzo Matsumiya <ematsumiya@suse.de>,
Martin Wilck <mwilck@suse.com>,
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Subject: [PATCH v2 8/9] fabrics: fix some memory leaks
Date: Tue, 30 Mar 2021 17:57:10 +0200 [thread overview]
Message-ID: <20210330155711.8436-9-mwilck@suse.com> (raw)
In-Reply-To: <20210330155711.8436-1-mwilck@suse.com>
From: Martin Wilck <mwilck@suse.com>
None of these are critical for "nvme discover" or "nvme connect-all".
Still, silencing valgrind's error messages by fixing them gives some
peace of mind, and a longer-running program like the forthcomint
nvme monitor, leak checks are more important.
Use the previously introduced cleanup macros for this purpose.
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
fabrics.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/fabrics.c b/fabrics.c
index 9a694bd..f9e5dc6 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -49,6 +49,7 @@
#include "common.h"
#include "util/log.h"
+#include "util/cleanup.h"
#ifdef HAVE_SYSTEMD
#include <systemd/sd-id128.h>
@@ -308,7 +309,7 @@ static bool ctrl_matches_connectargs(const char *name, struct connect_args *args
{
struct connect_args cargs;
bool found = false;
- char *path, *addr;
+ char *path = NULL, *addr;
int ret;
bool persistent = true;
@@ -366,6 +367,8 @@ static bool ctrl_matches_connectargs(const char *name, struct connect_args *args
free(cargs.traddr);
free(cargs.trsvcid);
free(cargs.host_traddr);
+ free(addr);
+ free(path);
return found;
}
@@ -422,13 +425,18 @@ static struct connect_args *extract_connect_args(char *argstr)
return cargs;
}
-static void free_connect_args(struct connect_args *cargs)
+static void destruct_connect_args(struct connect_args *cargs)
{
free(cargs->subsysnqn);
free(cargs->transport);
free(cargs->traddr);
free(cargs->trsvcid);
free(cargs->host_traddr);
+}
+
+static void free_connect_args(struct connect_args *cargs)
+{
+ destruct_connect_args(cargs);
free(cargs);
}
@@ -1283,7 +1291,7 @@ retry:
static bool cargs_match_found(struct nvmf_disc_rsp_page_entry *entry)
{
- struct connect_args cargs = {};
+ struct connect_args cargs __cleanup__(destruct_connect_args) = { NULL, };
struct connect_args *c = tracked_ctrls;
cargs.traddr = strdup(entry->traddr);
@@ -1369,9 +1377,11 @@ static void nvmf_get_host_identifiers(int ctrl_instance)
cfg.hostid = nvme_get_ctrl_attr(path, "hostid");
}
+static DEFINE_CLEANUP_FUNC(cleanup_log, struct nvmf_disc_rsp_page_hdr *, free);
+
static int do_discover(char *argstr, bool connect, enum nvme_print_flags flags)
{
- struct nvmf_disc_rsp_page_hdr *log = NULL;
+ struct nvmf_disc_rsp_page_hdr *log __cleanup__(cleanup_log) = NULL;
char *dev_name;
int instance, numrec = 0, ret, err;
int status = 0;
@@ -1455,7 +1465,7 @@ static int discover_from_conf_file(const char *desc, char *argstr,
const struct argconfig_commandline_options *opts, bool connect)
{
FILE *f;
- char line[256], *ptr, *args, **argv;
+ char line[256], *ptr, *all_args, *args, **argv;
int argc, err, ret = 0;
f = fopen(PATH_NVMF_DISC, "r");
@@ -1477,6 +1487,7 @@ static int discover_from_conf_file(const char *desc, char *argstr,
ret = -ENOMEM;
goto out;
}
+ all_args = args;
argv = calloc(MAX_DISC_ARGS, BUF_SIZE);
if (!argv) {
@@ -1520,7 +1531,7 @@ static int discover_from_conf_file(const char *desc, char *argstr,
ret = err;
free_and_continue:
- free(args);
+ free(all_args);
free(argv);
}
--
2.30.1
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2021-03-30 16:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-30 15:57 [PATCH v2 0/9] Some minor fixes/additions for nvme-cli mwilck
2021-03-30 15:57 ` [PATCH v2 1/9] nvme-discover: lookup existing persistent controllers mwilck
2021-03-30 15:57 ` [PATCH v2 2/9] do_discover: free cfg.device when resetting it mwilck
2021-03-30 15:57 ` [PATCH v2 3/9] nvme-connect-all(1): fix documentation for --quiet/-S mwilck
2021-03-30 15:57 ` [PATCH v2 4/9] nvme: add some simplifying macros for __attribute__((cleanup())) mwilck
2021-03-30 15:57 ` [PATCH v2 5/9] nvme-cli: add generic logging functionality mwilck
2021-03-30 15:57 ` [PATCH v2 6/9] nvme: convert some function arguments from "char *" to "const char *" mwilck
2021-03-30 15:57 ` [PATCH v2 7/9] fabrics: use "const char *" in struct config mwilck
2021-03-30 15:57 ` mwilck [this message]
2021-03-30 15:57 ` [PATCH v2 9/9] fabrics: fix invalid memory access in discover_from_conf_file() mwilck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210330155711.8436-9-mwilck@suse.com \
--to=mwilck@suse.com \
--cc=Chaitanya.Kulkarni@wdc.com \
--cc=ematsumiya@suse.de \
--cc=hare@suse.de \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox