Initialize "autoreplace" in spa_ld_get_props()
spa_prop_find() may fail to find the specified property, in which case it suppresses ENOENT from zap_lookup(). In this case, the return value is left uninitialized, so spa_autoreplace was being initialized using an uninitialized stack variable. This was found using KMSAN. It appears to be a regression from commit 9eb7b46ed0, which removed the initialization of "autoreplace" from the definition. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Mark Johnston <markj@FreeBSD.org> Closes #12383
This commit is contained in:
parent
1c24bf966c
commit
da27b8bc7f
@ -4183,7 +4183,7 @@ spa_ld_get_props(spa_t *spa)
|
||||
return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO));
|
||||
|
||||
if (error == 0) {
|
||||
uint64_t autoreplace;
|
||||
uint64_t autoreplace = 0;
|
||||
|
||||
spa_prop_find(spa, ZPOOL_PROP_BOOTFS, &spa->spa_bootfs);
|
||||
spa_prop_find(spa, ZPOOL_PROP_AUTOREPLACE, &autoreplace);
|
||||
|
Loading…
x
Reference in New Issue
Block a user