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)
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to