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
This commit is contained in:
avg 2016-08-09 06:11:24 +00:00
parent 572ce929c2
commit 413181a8d3

View File

@ -3956,7 +3956,7 @@ zfs_rename(vnode_t *sdvp, vnode_t **svpp, struct componentname *scnp,
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)