From owner-svn-src-all@FreeBSD.ORG Fri Oct 2 00:42:53 2009 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A8AA1065679; Fri, 2 Oct 2009 00:42:53 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.delphij.net (delphij-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:2c9::2]) by mx1.freebsd.org (Postfix) with ESMTP id CB5408FC14; Fri, 2 Oct 2009 00:42:52 +0000 (UTC) Received: from tarsier.geekcn.org (tarsier.geekcn.org [211.166.10.233]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.delphij.net (Postfix) with ESMTPS id DC03D5C025; Fri, 2 Oct 2009 08:42:51 +0800 (CST) Received: from localhost (tarsier.geekcn.org [211.166.10.233]) by tarsier.geekcn.org (Postfix) with ESMTP id 9EFE855CE30F; Fri, 2 Oct 2009 08:42:51 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([211.166.10.233]) by localhost (mail.geekcn.org [211.166.10.233]) (amavisd-new, port 10024) with ESMTP id qOEO-mlJD3Cf; Fri, 2 Oct 2009 08:42:46 +0800 (CST) Received: from charlie.delphij.net (adsl-76-237-33-60.dsl.pltn13.sbcglobal.net [76.237.33.60]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id 2C68A55CE308; Fri, 2 Oct 2009 08:42:44 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=WUSmyUBKt6lYKcNnn9WbZ2slKYr7dCEy21Ud1C0QxRtinvIc8+t3vF43AuLqW67lh Rs2e1bZ2FT6tuQNfsDZ9w== Message-ID: <4AC54C81.7030201@delphij.net> Date: Thu, 01 Oct 2009 17:42:41 -0700 From: Xin LI Organization: The FreeBSD Project User-Agent: Thunderbird 2.0.0.22 (X11/20090803) MIME-Version: 1.0 To: Konstantin Belousov References: <200910011250.n91CoQ5G051511@svn.freebsd.org> In-Reply-To: <200910011250.n91CoQ5G051511@svn.freebsd.org> X-Enigmail-Version: 0.96.0 OpenPGP: id=18EDEBA0; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r197662 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Oct 2009 00:42:53 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Konstantin Belousov wrote: > Author: kib > Date: Thu Oct 1 12:50:26 2009 > New Revision: 197662 > URL: http://svn.freebsd.org/changeset/base/197662 > > Log: > Do not dereference vp->v_mount without holding vnode lock and checking > that the vnode is not reclaimed. > > Noted by: Igor Sysoev > MFC after: 1 week Thanks! > Modified: > head/sys/kern/uipc_syscalls.c > > Modified: head/sys/kern/uipc_syscalls.c > ============================================================================== > --- head/sys/kern/uipc_syscalls.c Thu Oct 1 12:48:35 2009 (r197661) > +++ head/sys/kern/uipc_syscalls.c Thu Oct 1 12:50:26 2009 (r197662) > @@ -2086,9 +2086,11 @@ retry_space: > /* > * Get the page from backing store. > */ > - bsize = vp->v_mount->mnt_stat.f_iosize; > vfslocked = VFS_LOCK_GIANT(vp->v_mount); > - vn_lock(vp, LK_SHARED | LK_RETRY); > + error = vn_lock(vp, LK_SHARED); > + if (error != 0) > + goto after_read; > + bsize = vp->v_mount->mnt_stat.f_iosize; > > /* > * XXXMAC: Because we don't have fp->f_cred > @@ -2101,6 +2103,7 @@ retry_space: > IO_VMIO | ((MAXBSIZE / bsize) << IO_SEQSHIFT), > td->td_ucred, NOCRED, &resid, td); > VOP_UNLOCK(vp, 0); > + after_read: > VFS_UNLOCK_GIANT(vfslocked); > VM_OBJECT_LOCK(obj); > vm_page_io_finish(pg); > - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkrFTIAACgkQi+vbBBjt66DwFgCgn1DSEwLvKdf05bwSWqe3cKwl qZEAn28OF2G63pmKDzTB5mm2O9SaGuQB =7Ae1 -----END PGP SIGNATURE-----