Close a memory leak when using zpool_read_all_labels

MFC after:	3 weeks
X-MFC-With:	322854
Sponsored by:	Spectra Logic Corp
This commit is contained in:
Alan Somers 2017-09-25 20:44:40 +00:00
parent 09f3bb8756
commit 76f9ab7444
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=323995

View File

@ -101,7 +101,7 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &degraded)
poolName = NULL;
if (zpool_in_use(g_zfsHandle, devFd, &poolState,
&poolName, &b_inuse) == 0) {
nvlist_t *devLabel;
nvlist_t *devLabel = NULL;
inUse = b_inuse == B_TRUE;
if (poolName != NULL)
@ -116,8 +116,10 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &degraded)
* might be damaged. In that case, zfsd should do nothing and
* wait for the sysadmin to decide.
*/
if (nlabels != VDEV_LABELS || devLabel == NULL)
if (nlabels != VDEV_LABELS || devLabel == NULL) {
nvlist_free(devLabel);
return (NULL);
}
try {
Vdev vdev(devLabel);
@ -131,6 +133,7 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &degraded)
exp.GetString().insert(0, context);
exp.Log();
nvlist_free(devLabel);
}
}
return (NULL);