loader: strdup name strings from dataset walker
The removal of zfs scratch buffer did miss the fact the dataset lookup was picking up the names from zap list.
This commit is contained in:
parent
c907ec9e16
commit
215597f05f
@ -92,7 +92,7 @@ static int zfs_env_count;
|
||||
SLIST_HEAD(zfs_be_list, zfs_be_entry) zfs_be_head = SLIST_HEAD_INITIALIZER(zfs_be_head);
|
||||
struct zfs_be_list *zfs_be_headp;
|
||||
struct zfs_be_entry {
|
||||
const char *name;
|
||||
cha *name;
|
||||
SLIST_ENTRY(zfs_be_entry) entries;
|
||||
} *zfs_be, *zfs_be_tmp;
|
||||
|
||||
@ -906,6 +906,7 @@ zfs_bootenv_initial(const char *name)
|
||||
while (!SLIST_EMPTY(&zfs_be_head)) {
|
||||
zfs_be = SLIST_FIRST(&zfs_be_head);
|
||||
SLIST_REMOVE_HEAD(&zfs_be_head, entries);
|
||||
free(zfs_be->name);
|
||||
free(zfs_be);
|
||||
}
|
||||
|
||||
@ -973,6 +974,7 @@ zfs_bootenv(const char *name)
|
||||
while (!SLIST_EMPTY(&zfs_be_head)) {
|
||||
zfs_be = SLIST_FIRST(&zfs_be_head);
|
||||
SLIST_REMOVE_HEAD(&zfs_be_head, entries);
|
||||
free(zfs_be->name);
|
||||
free(zfs_be);
|
||||
}
|
||||
|
||||
@ -992,7 +994,11 @@ zfs_belist_add(const char *name, uint64_t value __unused)
|
||||
if (zfs_be == NULL) {
|
||||
return (ENOMEM);
|
||||
}
|
||||
zfs_be->name = name;
|
||||
zfs_be->name = strdup(name);
|
||||
if (zfs_be->name == NULL) {
|
||||
free(zfs_be);
|
||||
return (ENOMEM);
|
||||
}
|
||||
SLIST_INSERT_HEAD(&zfs_be_head, zfs_be, entries);
|
||||
zfs_env_count++;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user