summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2020-05-13 17:19:41 -0500
committerDavid Teigland <teigland@redhat.com>2020-05-13 17:20:16 -0500
commit5c095400de2f84511726cc8178800d19657b814d (patch)
tree18d075669524e6b5b17a0618e151369b31fcc3a2
parent2f29765e7fd1135d070310683cf486f07d041c81 (diff)
downloadlvm2-5c095400de2f84511726cc8178800d19657b814d.tar.gz
hints: free hint structs on exit
and free on a couple error paths.
-rw-r--r--lib/commands/toolcontext.c1
-rw-r--r--lib/label/hints.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 2bd7fabd2..63b6811e5 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -1598,6 +1598,7 @@ struct cmd_context *create_toolcontext(unsigned is_clvmd,
dm_list_init(&cmd->formats);
dm_list_init(&cmd->segtypes);
dm_list_init(&cmd->tags);
+ dm_list_init(&cmd->hints);
dm_list_init(&cmd->config_files);
label_init();
diff --git a/lib/label/hints.c b/lib/label/hints.c
index 349d5aaef..9546f4880 100644
--- a/lib/label/hints.c
+++ b/lib/label/hints.c
@@ -351,6 +351,7 @@ static void _unlock_hints(struct cmd_context *cmd)
void hints_exit(struct cmd_context *cmd)
{
+ free_hints(&cmd->hints);
if (_hints_fd == -1)
return;
return _unlock_hints(cmd);
@@ -1321,6 +1322,7 @@ int get_hints(struct cmd_context *cmd, struct dm_list *hints_out, int *newhints,
*/
if (!_read_hint_file(cmd, &hints_list, &needs_refresh)) {
log_debug("get_hints: read fail");
+ free_hints(&hints_list);
_unlock_hints(cmd);
return 0;
}
@@ -1333,6 +1335,7 @@ int get_hints(struct cmd_context *cmd, struct dm_list *hints_out, int *newhints,
*/
if (needs_refresh) {
log_debug("get_hints: needs refresh");
+ free_hints(&hints_list);
if (!_lock_hints(cmd, LOCK_EX, NONBLOCK))
return 0;