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

Martin Matuska mm at FreeBSD.org
Wed Apr 3 09:52:31 UTC 2013


Author: mm
Date: Wed Apr  3 09:52:30 2013
New Revision: 249042
URL: http://svnweb.freebsd.org/changeset/base/249042

Log:
  Fix possible pool hold leak in dmu_send_impl()
  
  Problem reported to vendor:
    https://www.illumos.org/issues/3645
  
  Reported by:	Andriy Gapon <avg at FreeBSD.org>
  MFC after:	15 days

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c	Wed Apr  3 08:27:35 2013	(r249041)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c	Wed Apr  3 09:52:30 2013	(r249042)
@@ -500,14 +500,14 @@ dmu_send_impl(void *tag, dsl_pool_t *dp,
 	list_insert_head(&ds->ds_sendstreams, dsp);
 	mutex_exit(&ds->ds_sendstream_lock);
 
+	dsl_dataset_long_hold(ds, FTAG);
+	dsl_pool_rele(dp, tag);
+
 	if (dump_bytes(dsp, drr, sizeof (dmu_replay_record_t)) != 0) {
 		err = dsp->dsa_err;
 		goto out;
 	}
 
-	dsl_dataset_long_hold(ds, FTAG);
-	dsl_pool_rele(dp, tag);
-
 	err = traverse_dataset(ds, fromtxg, TRAVERSE_PRE | TRAVERSE_PREFETCH,
 	    backup_cb, dsp);
 


More information about the svn-src-head mailing list