Date: Thu, 01 Oct 2009 17:42:41 -0700 From: Xin LI <delphij@delphij.net> To: Konstantin Belousov <kib@FreeBSD.ORG> Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r197662 - head/sys/kern Message-ID: <4AC54C81.7030201@delphij.net> In-Reply-To: <200910011250.n91CoQ5G051511@svn.freebsd.org> References: <200910011250.n91CoQ5G051511@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
-----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 <is rambler-co ru> > 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 <delphij@delphij.net> 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-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AC54C81.7030201>