svn commit: r324168 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Andriy Gapon avg at FreeBSD.org
Sun Oct 1 16:41:07 UTC 2017


Author: avg
Date: Sun Oct  1 16:41:05 2017
New Revision: 324168
URL: https://svnweb.freebsd.org/changeset/base/324168

Log:
  MFV r323531: 8521 nvlist memory leak in get_clones_stat() and spa_load_best()
  
  illumos/illumos-gate at 7d3000f774e20097a1ee45cbd06d0e38065ddd5a
  https://github.com/illumos/illumos-gate/commit/7d3000f774e20097a1ee45cbd06d0e38065ddd5a
  
  https://www.illumos.org/issues/8521
    Yuri reported this to the mailing list:
    doing a `reboot -d` on current illumos-gate HEAD gives the following "::
    findleaks -dv" output:
    findleaks: maximum buffers => 301061
    findleaks: actual buffers => 297587
    findleaks:
    findleaks: potential pointers => 29289774
    findleaks: dismissals => 26242305 (89.5%)
    findleaks: misses => 331153 ( 1.1%)
    findleaks: dups => 2419681 ( 8.2%)
    findleaks: follows => 296635 ( 1.0%)
    findleaks:
    findleaks: peak memory usage => 7353 kB
    findleaks: elapsed CPU time => 1.5 seconds
    findleaks: elapsed wall time => 2.0 seconds
    findleaks:
    CACHE LEAKED BUFCTL CALLER
    ffffff03d222b008 120 ffffff03ef7ceb78 nv_alloc_sys+0x1f
    ffffff03d222a448 123 ffffff03f4150cc8 nv_alloc_sys+0x1f
    ffffff03d222b448 5 ffffff03f28bd598 nv_alloc_sys+0x1f
    ffffff03d222b888 87 ffffff03f28c10f0 nv_alloc_sys+0x1f
    ffffff03d222c008 21 ffffff03f4139310 nv_alloc_sys+0x1f
    ffffff03d222b888 43 ffffff040ef3f3e8 nv_alloc_sys+0x1f
    ffffff03d222c008 120 ffffff03f4591e58 nv_alloc_sys+0x1f
    ffffff03d222b008 121 ffffff03f352c068 nv_alloc_sys+0x1f
    ffffff03d222a448 112 ffffff03f414e5f8 nv_alloc_sys+0x1f
    ffffff03d222b008 119 ffffff03ee92fdc0 nv_alloc_sys+0x1f
    ffffff03d222b888 46 ffffff03f28c1378 nv_alloc_sys+0x1f
    ffffff03d222b448 4 ffffff03f28c7708 nv_alloc_sys+0x1f
    ffffff03d222c008 20 ffffff03f2a6e7e8 nv_alloc_sys+0x1f
  
  Reviewed by: Steve Gonczi <steve.gonczi at delphix.com>
  Reviewed by: George Wilson <george.wilson at delphix.com>
  Reviewed by: Yuri Pankov <yuripv at gmx.com>
  Reviewed by: Matt Ahrens <mahrens at delphix.com>
  Approved by: Dan McDonald <danmcd at joyent.com>
  Author: Pavel Zakharov <pavel.zakharov at delphix.com>
  
  MFC after:	5 weeks
  X-MFC after:	r324163

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
Directory Properties:
  head/sys/cddl/contrib/opensolaris/   (props changed)

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c	Sun Oct  1 16:37:54 2017	(r324167)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c	Sun Oct  1 16:41:05 2017	(r324168)
@@ -1808,10 +1808,10 @@ get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv)
 		fnvlist_add_nvlist(propval, ZPROP_VALUE, val);
 		fnvlist_add_nvlist(nv, zfs_prop_to_name(ZFS_PROP_CLONES),
 		    propval);
-	} else {
-		nvlist_free(val);
-		nvlist_free(propval);
 	}
+
+	nvlist_free(val);
+	nvlist_free(propval);
 }
 
 /*

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Oct  1 16:37:54 2017	(r324167)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Oct  1 16:41:05 2017	(r324168)
@@ -3096,6 +3096,8 @@ spa_load_best(spa_t *spa, spa_load_state_t state, int 
 
 	if (config && (rewind_error || state != SPA_LOAD_RECOVER))
 		spa_config_set(spa, config);
+	else
+		nvlist_free(config);
 
 	if (state == SPA_LOAD_RECOVER) {
 		ASSERT3P(loadinfo, ==, NULL);


More information about the svn-src-all mailing list