Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jun 2010 11:22:45 +0000 (UTC)
From:      Martin Matuska <mm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r209097 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201006121122.o5CBMjhH083931@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mm
Date: Sat Jun 12 11:22:45 2010
New Revision: 209097
URL: http://svn.freebsd.org/changeset/base/209097

Log:
  Fix ZFS panic deadlock: cycle in blocking chain via zfs_zget
  
  OpenSolaris onnv-revision:	9774:0bb234ab2287
  
  Obtained from:	OpenSolaris (Bug ID 6788152)
  Approved by:	pjd, delphij (mentor)
  MFC after:	3 days

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	Sat Jun 12 11:21:37 2010	(r209096)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Sat Jun 12 11:22:45 2010	(r209097)
@@ -2344,8 +2344,6 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i
 	ZFS_VERIFY_ZP(zp);
 	pzp = zp->z_phys;
 
-	mutex_enter(&zp->z_lock);
-
 	/*
 	 * If ACL is trivial don't bother looking for ACE_READ_ATTRIBUTES.
 	 * Also, if we are the owner don't bother, since owner should
@@ -2355,7 +2353,6 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i
 	    (pzp->zp_uid != crgetuid(cr))) {
 		if (error = zfs_zaccess(zp, ACE_READ_ATTRIBUTES, 0,
 		    skipaclchk, cr)) {
-			mutex_exit(&zp->z_lock);
 			ZFS_EXIT(zfsvfs);
 			return (error);
 		}
@@ -2366,6 +2363,7 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i
 	 * than to determine whether we were asked the question.
 	 */
 
+	mutex_enter(&zp->z_lock);
 	vap->va_type = IFTOVT(pzp->zp_mode);
 	vap->va_mode = pzp->zp_mode & ~S_IFMT;
 	zfs_fuid_map_ids(zp, cr, &vap->va_uid, &vap->va_gid);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006121122.o5CBMjhH083931>