From 5c095400de2f84511726cc8178800d19657b814d Mon Sep 17 00:00:00 2001 From: David Teigland Date: Wed, 13 May 2020 17:19:41 -0500 Subject: [PATCH] hints: free hint structs on exit and free on a couple error paths. --- lib/commands/toolcontext.c | 1 + lib/label/hints.c | 3 +++ 2 files changed, 4 insertions(+) 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;