From owner-svn-src-head@FreeBSD.ORG Sat Jun 12 11:22:45 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E1B8E1065672; Sat, 12 Jun 2010 11:22:45 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D090D8FC25; Sat, 12 Jun 2010 11:22:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o5CBMjJI083933; Sat, 12 Jun 2010 11:22:45 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o5CBMjhH083931; Sat, 12 Jun 2010 11:22:45 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201006121122.o5CBMjhH083931@svn.freebsd.org> From: Martin Matuska Date: Sat, 12 Jun 2010 11:22:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209097 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jun 2010 11:22:46 -0000 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);