--- cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c.sav 2014-02-28 20:23:26.000000000 -0500 +++ cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c 2014-02-28 20:27:39.000000000 -0500 @@ -1526,7 +1526,7 @@ zfs_lookup(vnode_t *dvp, char *nm, vnode } ZFS_EXIT(zfsvfs); error = zfs_vnode_lock(*vpp, cnp->cn_lkflags); - if (cnp->cn_flags & ISDOTDOT) + if ((cnp->cn_flags & ISDOTDOT) && *vpp != dvp) vn_lock(dvp, ltype | LK_RETRY); if (error != 0) { VN_RELE(*vpp);