Memory leak in zdb:import_checkpointed_state()
Reviewed-by: Igor Kozhukhov <igor@dilos.org> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Matthew Ahrens <mahrens@delphix.com> Closes #11396
This commit is contained in:
parent
f014700a37
commit
808e681238
|
@ -6762,6 +6762,7 @@ import_checkpointed_state(char *target, nvlist_t *cfg, char **new_path)
|
|||
{
|
||||
int error = 0;
|
||||
char *poolname, *bogus_name = NULL;
|
||||
boolean_t freecfg = B_FALSE;
|
||||
|
||||
/* If the target is not a pool, the extract the pool name */
|
||||
char *path_start = strchr(target, '/');
|
||||
|
@ -6780,6 +6781,7 @@ import_checkpointed_state(char *target, nvlist_t *cfg, char **new_path)
|
|||
"spa_get_stats() failed with error %d\n",
|
||||
poolname, error);
|
||||
}
|
||||
freecfg = B_TRUE;
|
||||
}
|
||||
|
||||
if (asprintf(&bogus_name, "%s%s", poolname, BOGUS_SUFFIX) == -1)
|
||||
|
@ -6789,6 +6791,8 @@ import_checkpointed_state(char *target, nvlist_t *cfg, char **new_path)
|
|||
error = spa_import(bogus_name, cfg, NULL,
|
||||
ZFS_IMPORT_MISSING_LOG | ZFS_IMPORT_CHECKPOINT |
|
||||
ZFS_IMPORT_SKIP_MMP);
|
||||
if (freecfg)
|
||||
nvlist_free(cfg);
|
||||
if (error != 0) {
|
||||
fatal("Tried to import pool \"%s\" but spa_import() failed "
|
||||
"with error %d\n", bogus_name, error);
|
||||
|
@ -7017,7 +7021,6 @@ verify_checkpoint_blocks(spa_t *spa)
|
|||
|
||||
spa_t *checkpoint_spa;
|
||||
char *checkpoint_pool;
|
||||
nvlist_t *config = NULL;
|
||||
int error = 0;
|
||||
|
||||
/*
|
||||
|
@ -7025,7 +7028,7 @@ verify_checkpoint_blocks(spa_t *spa)
|
|||
* name) so we can do verification on it against the current state
|
||||
* of the pool.
|
||||
*/
|
||||
checkpoint_pool = import_checkpointed_state(spa->spa_name, config,
|
||||
checkpoint_pool = import_checkpointed_state(spa->spa_name, NULL,
|
||||
NULL);
|
||||
ASSERT(strcmp(spa->spa_name, checkpoint_pool) != 0);
|
||||
|
||||
|
|
Loading…
Reference in New Issue