svn commit: r354593 - head/stand/libsa/zfs

Toomas Soome tsoome at FreeBSD.org
Sun Nov 10 15:04:00 UTC 2019


Author: tsoome
Date: Sun Nov 10 15:03:59 2019
New Revision: 354593
URL: https://svnweb.freebsd.org/changeset/base/354593

Log:
  loader: memory leak in vdev_label_read_config()
  
  We need to free the allocated buffer for label.

Modified:
  head/stand/libsa/zfs/zfsimpl.c

Modified: head/stand/libsa/zfs/zfsimpl.c
==============================================================================
--- head/stand/libsa/zfs/zfsimpl.c	Sun Nov 10 10:03:22 2019	(r354592)
+++ head/stand/libsa/zfs/zfsimpl.c	Sun Nov 10 15:03:59 2019	(r354593)
@@ -1622,10 +1622,8 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg)
 
 	nvl_size = VDEV_PHYS_SIZE - sizeof (zio_eck_t) - 4;
 	nvl = malloc(nvl_size);
-	if (nvl == NULL) {
-		free(label);
-		return (NULL);
-	}
+	if (nvl == NULL)
+		goto done;
 
 	for (int l = 0; l < VDEV_LABELS; l++) {
 		const unsigned char *nvlist;
@@ -1643,7 +1641,7 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg)
 		    DATA_TYPE_UINT64, NULL, &label_txg);
 		if (error != 0 || label_txg == 0) {
 			memcpy(nvl, nvlist, nvl_size);
-			return (nvl);
+			goto done;
 		}
 
 		if (label_txg <= txg && label_txg > best_txg) {
@@ -1666,6 +1664,8 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg)
 		free(nvl);
 		nvl = NULL;
 	}
+done:
+	free(label);
 	return (nvl);
 }
 


More information about the svn-src-head mailing list