summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorluoqi <luoqi@FreeBSD.org>1998-08-28 20:07:13 +0000
committerluoqi <luoqi@FreeBSD.org>1998-08-28 20:07:13 +0000
commit71cc3d284fa78b67d69f126996e2b68b99d069e1 (patch)
tree55a34cb9fc03e8475428f07bf5b648c490840644 /sys
parent3ecbceb35a1c299db84d6002b6e2c87e72c9d35e (diff)
downloadFreeBSD-src-71cc3d284fa78b67d69f126996e2b68b99d069e1.zip
FreeBSD-src-71cc3d284fa78b67d69f126996e2b68b99d069e1.tar.gz
Close a race window for getnewbuf() between shared lock holders of the vnode.
Reviewed by: Mike Smith
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_bio.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 40d5a73..9ecd7a0 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -11,7 +11,7 @@
* 2. Absolutely no warranty of function or purpose is made by the author
* John S. Dyson.
*
- * $Id: vfs_bio.c,v 1.171 1998/08/24 17:47:25 phk Exp $
+ * $Id: vfs_bio.c,v 1.172 1998/08/25 14:41:42 phk Exp $
*/
/*
@@ -1518,7 +1518,7 @@ loop1:
* Normally the vnode is locked so this isn't a problem.
* VBLK type I/O requests, however, don't lock the vnode.
*/
- if (!VOP_ISLOCKED(vp) && gbincore(vp, blkno)) {
+ if (VOP_ISLOCKED(vp) != LK_EXCLUSIVE && gbincore(vp, blkno)) {
bp->b_flags |= B_INVAL;
brelse(bp);
goto loop;
OpenPOWER on IntegriCloud