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

Andriy Gapon avg at FreeBSD.org
Tue Aug 9 06:11:26 UTC 2016


Author: avg
Date: Tue Aug  9 06:11:24 2016
New Revision: 303869
URL: https://svnweb.freebsd.org/changeset/base/303869

Log:
  fix a zfs cross-device rename crash introduced in r303763
  
  The problem was that 'zfsvfs' variable was not initialized if the error
  was detected, but in the exit path the variable was dereferenced before
  the error code was checked.
  
  Reported by:	np
  MFC after:	3 days
  X-MFC with:	r303763

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

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Tue Aug  9 04:59:55 2016	(r303868)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Tue Aug  9 06:11:24 2016	(r303869)
@@ -3956,7 +3956,7 @@ unlockout:			/* all 4 vnodes are locked,
 	VOP_UNLOCK(sdvp, 0);
 
 out:				/* original two vnodes are locked */
-	if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS && error == 0)
+	if (error == 0 && zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS)
 		zil_commit(zilog, 0);
 
 	if (*tvpp != NULL)


More information about the svn-src-all mailing list