svn commit: r323995 - head/cddl/usr.sbin/zfsd

Alan Somers asomers at FreeBSD.org
Mon Sep 25 20:44:42 UTC 2017


Author: asomers
Date: Mon Sep 25 20:44:40 2017
New Revision: 323995
URL: https://svnweb.freebsd.org/changeset/base/323995

Log:
  Close a memory leak when using zpool_read_all_labels
  
  MFC after:	3 weeks
  X-MFC-With:	322854
  Sponsored by:	Spectra Logic Corp

Modified:
  head/cddl/usr.sbin/zfsd/zfsd_event.cc

Modified: head/cddl/usr.sbin/zfsd/zfsd_event.cc
==============================================================================
--- head/cddl/usr.sbin/zfsd/zfsd_event.cc	Mon Sep 25 20:38:55 2017	(r323994)
+++ head/cddl/usr.sbin/zfsd/zfsd_event.cc	Mon Sep 25 20:44:40 2017	(r323995)
@@ -101,7 +101,7 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &de
 	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 &de
 		 * 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 &de
 
 			exp.GetString().insert(0, context);
 			exp.Log();
+			nvlist_free(devLabel);
 		}
 	}
 	return (NULL);


More information about the svn-src-all mailing list