Config of a hot spare or l2cache device will leak memory in function
add_config(). At the start of this function, when dealing with a
config which belongs to a hot spare not currently in use or a l2cache
device the config should be freed.
Signed-off-by: liaoyuxiangqin <guo.yong33@zte.com.cn>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4910
&state) == 0 &&
(state == POOL_STATE_SPARE || state == POOL_STATE_L2CACHE) &&
nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid) == 0) {
- if ((ne = zfs_alloc(hdl, sizeof (name_entry_t))) == NULL)
+ if ((ne = zfs_alloc(hdl, sizeof (name_entry_t))) == NULL) {
+ nvlist_free(config);
return (-1);
+ }
if ((ne->ne_name = zfs_strdup(hdl, path)) == NULL) {
free(ne);
+ nvlist_free(config);
return (-1);
}
ne->ne_guid = vdev_guid;
ne->ne_num_labels = num_labels;
ne->ne_next = pl->names;
pl->names = ne;
+ nvlist_free(config);
return (0);
}